一尘不染

asmx网络服务,json,javascript / jquery?

json

我正在使用asmx从数据库中检索一些数据,

public class TestPage1
{
    public int UserID { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
}




    [WebMethod]
    public EntityLayer.TestPage1 GetData(int id)
    {
        TestPage1 test = TestPage1.GetData(id).SingleOrDefault();
        return test;
    }


$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "WebService.asmx/GetData",
  data: "{id}",
  dataType: "json"
});

如何在javascript中对测试对象进行脱字符处理?有更好的方法吗?谢谢


阅读 187

收藏
2020-07-27

共1个答案

一尘不染

我建议您看一下以前的答案,以解决附近的问题。如何构建JSON对象以发送到AJAX
WebService?如果ContentType不是JSON,可以从.asmxWeb服务返回JSON吗?

正确的代码应如下所示

[WebMethod]
[ScriptMethod (ResponseFormat = ResponseFormat.Json)]
public EntityLayer.TestPage1 GetData(int id)
{
    TestPage1 test = TestPage1.GetData(id).SingleOrDefault();
    return test;
}

var myData = 5;
$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "WebService.asmx/GetData",
    //data: {id:JSON.stringify(myData)},
    data: JSON.stringify({id:myData}),
    dataType: "json",
    success: function(response){
        alert("UserName=" + response.d.UserName +
              ", FirstName=" + response.d.FirstName +
              ", MiddleName=" + response.d.MiddleName+
              ", LastName=" + response.d.LastName);
    }
})

这里JSON.stringify是从脚本json2.js你可以从下载功能http://www.json.org/js.html

如果id整数值JSON.stringify(myData)与相同myData,但是对于所有更复杂的示例,我强烈建议您使用此函数。

如何从代码中看到web方法的所有结果都将保存在property中d,因此您应使用例如response.d.FirstName语法来访问名字。

更新 :如果是HTTP GET,则data参数应为{id:JSON.stringify(myData)}。如果是HTTPPOST:JSON.stringify({id:myData})

2020-07-27