页面代码:
1 function hw1() 2 { 3 $.post( 4 "WebService1.asmx/HelloWorld1", { "name": "小黎hw", "age": "18" }, function(result) { 5 //alert(result); 6 alert(result.d); 7 }, "json"); 8 }
webservice的代码:
[System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld1(string name,int age) { return "Hello World1 " + name + ", age: " + age; }
确实有返回值,但是为什么alert弹不出来?
webService默认返回的是XML格式,在.net2.0中如果想让webService返回JSON格式比较麻烦,你可以参考这篇文章:
http://www.cnblogs.com/penbox/archive/2011/10/13/2210726.html
.NET 3.5以后WebService中内置了JSON格式,但要把请求的Accept和Content-Type设置为JSON格式,然后在JS中用result.d获取(result为返回值)。
所以你的代码可以这样修改:
1、用XML格式:
function hw1() { $.post("WebService1.asmx/HelloWorld1", { "name": "小黎hw", "age": 18 }, function(result) { alert(result); }, "xml"); }
这种写法请求头为:
2、用JOSN格式:
function hw1() { $.ajax({ url: "WebService1.asmx/HelloWorld1", data: '{"name":"小黎hw","age": 18 }', type: "post", dataType: "json", contentType: "application/json; charset=utf-8", success: function (result) { alert(result.d); } }); }
这种写法请求头为:
弹出的是[object]啊、不行啊
@xiao黎: 因为XML没有解析,当然是Object啦
webService返回的不都是json格式吗?我是参考这个网上面写的http://www.w3school.com.cn/jquery/ajax_post.asp
@xiao黎: 当然不是啦,webservice默认返回的是XML格式
@artwl: 哦,那为什么用开始的那个格式不行了?ashx一般处理程序可以这样写的啊,写得简单好多。
@xiao黎: 返回的是XML格式,你用JSON格式接收,当然不行啦
用chrome的开发者工具,看下你的代码返回的json格式,是不是真的有个d。
好像是这样的:
@xiao黎: 你的这个是xml格式的,不是json的,网上找个jquery ajax 调用 web service的例子。