2011-12-27 80 views
0

我想用jQuery调用一个asmx web服务方法,并为data传递实际的JavaScript对象,并返回JSON。我能来最接近的是这样的:

$.ajax({ 
    url: "WebService.asmx/HelloWorld", 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify({ num: 12, name: "Adam" }), 
    dataType: "json", 
    success: function (data) { alert(data.d); } 
}); 

我怎样才能成功地使这个电话没有第一字符串化我的对象?

我想这(去除的contentType)

$.ajax({ 
    url: "WebService.asmx/HelloWorld", 
    type: "POST", 
    data: { num: 12, name: "Adam" }, 
    dataType: "json", 
    success: function (data) { alert(data.d); } 
}); 

但是,返回结果以XML,JSON不是。

这里的Web方法:

[WebMethod] 
[ScriptMethod] 
public string HelloWorld(int num, string name) { 
    return ++num + name; 
} 

编辑

这里的请求的报头的截图。很明显,content-type被设置为xml来应答。

enter image description here

回答

2
设置ResponseFormat: [的WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 公共字符串的HelloWorld(INT NUM,字符串名称){ 返回++ NUM +名称; } 刚一说明:ASMX不返回JSON用于获取只发布


每Dave的评论

这是不可能与ASMX和ASPX JSON端点。他们需要application/json Content-Type和一个POST请求或者不需要JSON。

+0

看起来很有希望,但我仍然收回XML。我使用与第二个代码示例相同的设置调用它 - 没有contentType。我应该改变什么吗? – 2011-12-27 15:42:38

+0

你用什么来确定格式?萤火/控制台? – Joe 2011-12-27 15:44:36

+0

Chrome开发工具 - 这就是我所看到的:'<?xml version =“1.0”encoding =“utf-8”?> 13 Adam'另外,我的成功回调并不是解雇 - 至少我应该得到一个不确定的警报。 – 2011-12-27 15:46:58