2011-03-10 118 views
3

(对不起,我的英语,它不是我的出生语言) 我有一个使用codeigniter + JqueryUI的项目。我正在考虑将JQuery版本升级到1.5,主要是因为我使用了很多Ajax调用,并且速度的任何改进都非常值得赞赏。 所以这是我的代码,在至极JQuery的版本1.4.4正常工作:Jquery 1.5 ajax发送成GET POST数据

$("#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错误,但请求的URL是这样的: http://myurl.com/produtos_produto/json_produtos/f?callback=JQUERY_hashofnumbers,尽管这是一个后请求。 有谁知道它为什么会发生?

回答

2

检查隐藏重定向

在我的情况

我使用Django,其中,一般而言,所有URL以'/'结尾

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

在我的JavaScript中,我不小心省略了我的POST请求中尾随的'/'。这导致重定向(到正确的url)。然而,在重定向期间,显然POST会自动转换为GET(请参阅,例如,https://stackoverflow.com/a/10586852/473285)。