无效的 JSON 原语:id
我无法让以下功能正常工作。好像序列化错了。这是不同数据变体的第五次迭代。我最初只是做 data: {'id': id} 就像我在使用 WCF 时所做的那样,但使用 ASMX 时它不起作用。看起来它正在将数据序列化为 id=1234 而不是 id:1234,但我对此还很陌生。任何帮助将不胜感激。哦,我可以直接在浏览器中调用该服务,它会正确返回数据,所以我知道这不是该服务。
function getVentID(id) {
//look up id in database and get VentID
alert('id: ' + id);
var jsdata = { "id": + id}
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: 'services/UserService.asmx/getVentID',
data: jsdata,
dataType: 'json',
success: function (msg) {
alert(msg.d);
},
error: function (a, b, c) {
alert('Error: ' + a.toString() + ' ' + b.toString() + " " + c.toString());
}
});
}
PS 我知道有大约 10 个相同的问题,但没有一个有我能找到或对我有用的答案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的修复方法是将
var jsdata
开头的行更改为:问题是 jQuery 将 jsdata 编码为表单数据,而不是 json。
dataType
参数影响响应的解析方式,而不是 POST 数据的编码方式。据我所知,jQuery 中实际上没有任何 JSON 序列化代码。显然 John Resig 建议使用 Douglas Crockford 的 json2.js。
要使用它,请添加对 json.js 的脚本引用,然后:
The simplest possible fix would be to change the line beginning
var jsdata
to:The problem is that jQuery is encoding jsdata as form data, not as json. The
dataType
parameter influences how the response is parsed, not how the POST data is encoded.There's not actually any JSON serialization code in jQuery to the best of my knowledge. Apparently John Resig suggests using Douglas Crockford's json2.js.
To use it, add a script reference to json.js and then:
我现在解决了这个问题。
您需要以这种格式传递 url:
http://domain.com.br/service .asmx/method?objParam={q : "search"}
在你的 service.asmx 文件中,你需要声明这个方法:
在你的代码中,看起来像:
i solved this problem right now.
You need pass the url in this format:
http://domain.com.br/service.asmx/method?objParam={q : "search"}
And in your service.asmx file, you need declare this method:
In your code, looks like: