升级到v1.5时出现Jquery ajax错误

我从v1.4.4升级到v1.5。 我想我发现了下面的问题

$(document).ready(function(){ // Get token on page load. update_csrf_token(); 

function看起来像这样…… 编辑

 function update_csrf_token() { $.ajax({ type: "GET", url: "", dataType: "json", jsonp: false, jsonpCallback: "callbackName", success: function(data) { csrf_token = data.csrf_token; return data.csrf_token; } }); } 

我在firebug中查找了ajax请求,它似乎在url的末尾添加了?_ = 1297353567948 ,这使得csrf令牌无法生成。 我如何摆脱这一点,还是1.5新手,我什么也做不了? 谢谢

jQuery 1.5会自动添加一个随机回调参数,但你可以通过设置jsonpjsonpCallback jQuery ajax设置来覆盖它。

来自jQuery Ajax API :

从jQuery 1.5开始,将jsonp选项设置为false可防止jQuery将“?callback”字符串添加到URL或尝试使用“=?” 转型。 在这种情况下,您还应该显式设置jsonpCallback设置。 例如, { jsonp: false, jsonpCallback: "callbackName" }

下划线参数( ?_=... )是一个包含更改时间戳的参数,从而使请求URL始终显示为浏览器以前从未见过的内容并强制实际的HTTP请求。 可以通过向.ajax()调用添加cache: true设置来启用缓存来删除该参数(或通过全局设置: jQuery.ajaxSetup({cache:true}); .ajax()使用dataTypes scriptjsonp ,设置默认为true

请validation您的代码和插件(例如,使用$ .ajaxSettings作为默认选项的旧validation插件。删除如下所示的代码:

 var settings = $.extend( {}, $.ajaxSettings, settings ); 

如果您不能或不想这样做,请尝试添加:

 { jsonp: null, jsonpCallback: null } 

到你的设置。 所以你的代码应该是:

 $.ajax({ type: "GET", url: "", dataType: "json", jsonp: null, jsonpCallback: null, success: function(data) { csrf_token = data.csrf_token; return data.csrf_token; } }); 

或者您可以使用$ ajaxSetup()来设置默认设置以防止jsonp回调:

 $ajaxSetup({ jsonp: null, jsonpCallback: null }); 

有关详细信息,请参阅票号#8084 。

注意:官方jQuery插件中心validation插件的文档 – http://plugins.jquery.com/project/validate已经过时(这真的让我感到烦恼)。 它仅涵盖validation插件的1.5.5版本。 确保参考主页: jQuery插件:validation最新版本。

在AJAX中设置cache:false (不要忘记逗号),该参数将停止追加。 如果它与jsonp相关,你会看到添加的内容如下:

回调= jQuery171003826577159490807_1332979269727

但是?_ = 看起来像时间戳是jQuery试图阻止任何客户端缓存请求的标志。

我遇到了同样的问题,经过太多的谷歌搜索,我最终得到的是因为jquery.validate.min.js,强制jsonp调用。

新版本的JQuery Validation 1.8没有更多问题

http://bassistance.de/jquery-plugins/jquery-plugin-validation/