我建议您查看我之前的回答以了解相关问题如何构建 JSON 对象以发送到 AJAX WebService? https://stackoverflow.com/questions/2737525/how-do-i-build-a-json-object-to-send-to-an-ajax-webservice/2738086#2738086 and 如果 ContentType 不是 JSON,我可以从 .asmx Web 服务返回 JSON 吗? https://stackoverflow.com/questions/2670147/can-i-return-json-from-an-asmx-web-service-if-the-contenttype-is-not-json/2671583#2671583
正确的代码应该如下所示
[WebMethod]
[ScriptMethod (ResponseFormat = ResponseFormat.Json)]
public EntityLayer.TestPage1 GetData(int id)
{
TestPage1 test = TestPage1.GetData(id).SingleOrDefault();
return test;
}
and
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);
}
})
where JSON.stringify
是脚本 json2.js 中的一个函数,您可以从中下载http://www.json.org/js.html http://www.json.org/js.html.
If the id
值为整数JSON.stringify(myData)
与myData
,但对于所有更复杂的示例,我强烈建议您使用此函数。
从代码中还可以看出,Web方法的所有结果都将保存在属性中d
,所以你应该使用例如response.d.FirstName
访问名字的语法。
UPDATED:如果是 HTTP GETdata
参数应该是{id:JSON.stringify(myData)}
。如果是 HTTP POST:JSON.stringify({id:myData})