我无法使以下功能正常工作.似乎是序列化它错了.这是关于不同数据变体的第5次迭代.我最初只是像在WCF上工作的那样做数据:{‘id’:id},但是与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()); } }); }
附:我知道有10个相同的问题,但没有一个可以找到或者对我有用的答案.
解决方法
最简单的修复方法是将开始var jsdata的行更改为:
var jsdata = '{id:' + id + '}';
问题是jQuery将jsdata编码为表单数据,而不是json. dataType参数影响响应如何解析,而不是如何对POST数据进行编码.
据我所知,jQuery中没有任何JSON序列化代码.显然是John Resig suggests using Douglas Crockford’s json2.js.
要使用它,请为json.js添加脚本引用,然后:
var jstext = JSON.stringify(jsdata,null,2);