我正在使用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中对测试对象进行脱字符处理?有更好的方法吗?谢谢
我建议您看一下以前的答案,以解决附近的问题。如何构建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。
JSON.stringify
如果id整数值JSON.stringify(myData)与相同myData,但是对于所有更复杂的示例,我强烈建议您使用此函数。
id
JSON.stringify(myData)
myData
如何从代码中看到web方法的所有结果都将保存在property中d,因此您应使用例如response.d.FirstName语法来访问名字。
d
response.d.FirstName
更新 :如果是HTTP GET,则data参数应为{id:JSON.stringify(myData)}。如果是HTTPPOST:JSON.stringify({id:myData})
data
{id:JSON.stringify(myData)}
JSON.stringify({id:myData})