Javascript $.ajax-为数据属性发送对象
我试图用jQuery调用一个ASMXWeb服务方法,并为Javascript $.ajax-为数据属性发送对象,javascript,jquery,asmx,Javascript,Jquery,Asmx,我试图用jQuery调用一个ASMXWeb服务方法,并为数据传递一个实际的JavaScript对象,然后返回JSON。我能做的最接近的事情是: $.ajax({ url: "WebService.asmx/HelloWorld", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify({ num: 12, name: "Adam" }),
数据
传递一个实际的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)
但这将以XML而不是json返回结果
以下是web方法:
[WebMethod]
[ScriptMethod]
public string HelloWorld(int num, string name) {
return ++num + name;
}
编辑
下面是请求标题的屏幕截图。显然,响应的内容类型设置为xml
设置响应格式:
[网络方法]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共字符串HelloWorld(int num,字符串名称){
返回++num+name;
}
请注意:asmx不会为GETs only POST返回JSON
根据Dave的评论 使用ASMX和ASPXJSON端点是不可能的。它们需要application/json内容类型和POST请求,或者不需要json
这看起来很有希望,但我仍在找回XML。我使用与我的第二个代码示例相同的设置调用了它-没有contentType。我是否应该更改其他内容?Chrome开发工具-这就是我看到的:
13Adam
-此外,我的成功回调没有触发-我至少应该得到一个未定义的警报。但也许只添加contentType:“application/json;charset=utf-8”
就足够了。[WebMethod]
[ScriptMethod]
public string HelloWorld(int num, string name) {
return ++num + name;
}