(抱歉我的英语,不是我的出生时间) 我有一个使用codeigniter + JqueryUI的项目。我正在考虑将JQuery版本升级到1.5,主要是因为我使用了大量的ajax调用,并且对速度的任何改进都非常感激。 所以这是我的代码,在JQuery 1.4.4版中运行良好:
$("#nome_produto").autocomplete({
source: function( request, response ) {
$.ajax({
async:false,
url: "<?php echo site_url("produtos_produto/json_produtos/f") ?>",
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错误,但请求的网址是: http://myurl.com/produtos_produto/json_produtos/f?callback=JQUERY_hashofnumbers,即使这是一个帖子请求。 有谁知道为什么会这样?
答案 0 :(得分:5)
可能与此故障单有关:http://bugs.jquery.com/ticket/8084 快速解决方法是:
jQuery.ajaxSetup({ jsonp: null, jsonpCallback: null});
在进行ajax调用之前
答案 1 :(得分:2)
检查隐藏的重定向
在我的情况下,我使用的是Django,一般来说,所有网址都以'/'结尾
如果请求的URL不是以'/'结尾,并且找不到资源,那么Django会重定向到同一个URL,并附加'/'(这是Django中一个非常有用的选项)。
在我的javascript中,我不小心在POST请求中省略了尾随'/'。这导致重定向(到正确的URL)。但是,在重定向期间,POST会自动转换为GET(请参阅例如https://stackoverflow.com/a/10586852/473285)。