Bar*_*art 1 asp.net jquery json asmx
我使用asmx从DB检索一些数据,
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"
});
Run Code Online (Sandbox Code Playgroud)
如何在javascript中对测试对象进行去序列化?还有更好的方法吗?谢谢
Ole*_*leg 11
我建议您查看我之前的答案以了解紧密的问题如何构建一个JSON对象以发送到AJAX WebService?并且我可以从一个的.asmx Web服务返回JSON如果将contentType不是JSON?
正确的代码应如下所示
[WebMethod]
[ScriptMethod (ResponseFormat = ResponseFormat.Json)]
public EntityLayer.TestPage1 GetData(int id)
{
TestPage1 test = TestPage1.GetData(id).SingleOrDefault();
return test;
}
Run Code Online (Sandbox Code Playgroud)
和
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);
}
})
Run Code Online (Sandbox Code Playgroud)
其中JSON.stringify是json2.js脚本中的一个函数,可以从http://www.json.org/js.html下载.
如果id值是整数JSON.stringify(myData)是相同的myData,但对于所有更复杂的示例,我严格建议您使用此函数.
如何从代码中看到Web方法的所有结果都将保存在属性中d,因此您应该使用例如response.d.FirstName语法来访问名字.
更新:在HTTP GET的情况下,data参数应该是{id:JSON.stringify(myData)}.在HTTP POST的情况下:JSON.stringify({id:myData})
| 归档时间: |
|
| 查看次数: |
12215 次 |
| 最近记录: |