微软的webservice太不给力了,.Net 2.0里只能返回xml,3.0以后才能返回json。客户端调用起来很不方便,鄙视下。不可能为了这个小功能我就升级到.Net3.0啊。这帮强盗!!!
假如我有一个名为WebService .asmx的webservice,里面有如下方法:
[WebMethod]
public string test()
{
return "{id:1,name:'TestName'}";
}
public string test()
{
return "{id:1,name:'TestName'}";
}
我想在前台页面通过jQuery调用此方法,然后将 返回的这个字符串作为JSON对象使用的话,客户端就应该如下编写:
<script type="text/javascript" language="javascript">
$(document).ready(
function()
{
$("#btn1").click(
function ()
{
$.ajax({
type: "POST",
url: "webservice.asmx/test",
dataType: "xml",
data:{suggest:"txt"},
success: function(msg)
{
//显示后台返回的数据
var returnText=msg.text;
var data=eval('('+returnText+')');//将字符串转换成JSON格式
$("#divID").html(data.id);
$("#divName").html(data.name);
}
});
}
);
}
);
</script>
$(document).ready(
function()
{
$("#btn1").click(
function ()
{
$.ajax({
type: "POST",
url: "webservice.asmx/test",
dataType: "xml",
data:{suggest:"txt"},
success: function(msg)
{
//显示后台返回的数据
var returnText=msg.text;
var data=eval('('+returnText+')');//将字符串转换成JSON格式
$("#divID").html(data.id);
$("#divName").html(data.name);
}
});
}
);
}
);
</script>
坑爹啊,有木有。这样一来,还不如直接写一个asp.net的页面,清空里面所有的HTML代码,然后像写PHP那样,直接往页面写JSON字符串来的利索,而且还可以直接设置ContentType为application/JSON。前台JQuery获取的值直接就是JSON啊。