将 JSON 数据发布到 .asmx Web 服务
我正在尝试将一些简单的参数发布到 .asmx Web 服务。
我收到以下错误:请求格式无效:application/json; charset=utf-8。
我真正需要的是能够传递一个复杂的对象,但我无法通过使用 json 内容类型发出 POST 请求。
这是我的 WebService 定义
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public int JsonTest2(int myparm1, int myparm2)
{
return 101;
}
这是我的 javascript 代码
function JsonTest2() {
$.ajax({
type: 'POST',
url: "http://localhost/WebServices/MyTest.asmx/JsonTest2",
data: "{myparm1:105,myparm2:23}",
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(msg);
},
error: function (msg) {
alert('failure');
alert(msg);
}
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 localhost 时请确保 URL 包含端口号。
Make sure the URL contains port number when using localhost.
确保您的 ASMX 服务类使用
[ScriptService]
属性进行修饰。Make sure your ASMX service class is decorated with the
[ScriptService]
attribute.您应该使用格式为正确 JSON 数据的值作为
data
:而不是
You can validate on the site http://www.jsonlint.com/ 其中数据是JSON数据。因此,您应该将代码更改为
如果输入参数更复杂,我建议您使用 JSON.stringify 函数rel="nofollow noreferrer">json2.js(请参阅例如这个答案):
在
$.ajax
的最新版本中,myValue1
和myValue2
可以是复杂的结构(对象具有属性)或具有甚至另一个复杂结构或数组作为属性的数组。You should use as
data
the value which formatted as correct JSON data:instead of
You can validate on the site http://www.jsonlint.com/ which data are JSON data. So you should change your code to
In case of more complex input parameters I recommend you to use
JSON.stringify
functionfrom the json2.js (see this answer for example):In the last version of
$.ajax
usage themyValue1
andmyValue2
can be complex structures (objects with properties) or arrays having even another complex structures or arrays as the properties.