Alb*_*reo 10 jquery json jquery-1.5
我刚刚从版本1.4升级到jQuery版本1.5,现在我的AJAX调用总是因"无效标签"错误而失败.
一个示例请求是:
jQuery.ajax({
async: false
, dataType: "json"
, error: function (xhr, status, error) { ... }
, success: function (data, status, xhr) { ... }
, type: "post"
, url: "ajax/request.asp"
});
Run Code Online (Sandbox Code Playgroud)
在网上我发现当返回的JSON没有用jQuery的回调包装时会引发这个错误(例如jQuery1234({ "something": "abcd" }).
问题是我正在返回JSON,而不是JSONP(我在AJAX请求中声明它),为什么我必须在返回的JSON中指定回调?
在1.5的changelog没有提到这个...(或者是我谁也看不懂?)
更新:
这是一个不工作的JSON的例子:
{
"esito":"Ok",
"centriCosto":[
{
"id":"1",
"descrizione":"Colazione"
},
{
"id":"2",
"descrizione":"Pranzo"
},
{
"id":"3",
"descrizione":"Cena"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是回调包装的工作JSON:
jQuery1502710949228847014_1296739130498({
"esito":"Ok",
"centriCosto":[
{
"id":"1",
"descrizione":"Colazione"
},
{
"id":"2",
"descrizione":"Pranzo"
},
{
"id":"3",
"descrizione":"Cena"
}
]
})
Run Code Online (Sandbox Code Playgroud)
顺便说一句,Firebug说它们都是有效的JSON(他对正确性非常挑剔).
Alb*_*reo 28
好的,我发现了到底发生了什么.
jQuery的Validation插件与jQuery 1.5不兼容(参见一和二),删除了插件产生的正确行为.
如果其他人有这个问题,插件的存储库中有一个补丁:link
我实际上遇到了类似的问题,但它似乎与这个错误有关:http://bugs.jquery.com/ticket/8398
它不一定与jQuery-validate相关,我花了一些时间来解决问题.事实证明,jQuery 1.5正在修改json到jsonp的后续ajax调用,这会导致此错误.
我通过遵循错误更改历史记录中建议的一个变通方法并在我的ajax调用之前将以下代码放在某处来修复它:
$.ajaxSetup({
jsonp: null,
jsonpCallback: null
});
Run Code Online (Sandbox Code Playgroud)
应该解决其他ajax请求的任何问题.
| 归档时间: |
|
| 查看次数: |
11626 次 |
| 最近记录: |