Jquery 1.5 ajax在POST上作为GET数据发送

(抱歉我的英文,它不是我的出生郎)我有一个使用codeigniter + JqueryUI的项目。 我正在考虑将JQuery版本升级到1.5,主要是因为我使用了大量的ajax调用,并且对速度的任何改进都非常感激。 所以这是我的代码,在JQuery 1.4.4版中运行良好:

$("#nome_produto").autocomplete({ source: function( request, response ) { $.ajax({ async:false, url: "", dataType: "json", type: "POST", data: request, success: function( data ) { response( $.map( data, function( item ) { return { label: item.label, value: item.label, cod: item.cod } })); }, beforeSend:function(){ $("#nome_produto").toggleClass("loading"); }, complete:function(){ $("#nome_produto").toggleClass("loading"); } }); }, minLenght:3 }); 

在Jquery 1.5中,我收到了404错误,但请求的URL是: http ://myurl.com/produtos_produto/json_produtos/f?callback = JERY_hashofnumbers,即使这是一个post请求。 有谁知道为什么会这样?

可能与此票证有关: http : //bugs.jquery.com/ticket/8084快速解决方法是:

  jQuery.ajaxSetup({ jsonp: null, jsonpCallback: null}); 

在做ajax调用之前

检查隐藏的重定向

在我的情况下我使用的是Django,一般来说,所有的URL都以’/’结尾

如果请求的URL不是以’/’结尾,并且找不到资源,那么Django会发送一个重定向到同一个URL并附加’/’(这是Django中一个非常有用的选项)。

在我的javascript中,我不小心在POST请求中省略了尾随’/’。 这导致重定向(到正确的URL)。 但是,在重定向期间,POST会自动转换为GET(请参阅https://stackoverflow.com/a/10586852/473285 )。