如何在jQuery Ajax调用后检索XHR参数?

时间:2011-01-19 13:08:30

标签: jquery xmlhttprequest

在阅读了很多帖子和jQuery文档之后,我的第一个问题是... jQuery的新手......

在我的项目中,我有一个带有jQuery Ajax调用的多个过滤器的列,以减少main.php中显示的poduct数量。工作正常,但在例如排序结果或在响应文件main.php中单击分页后,我需要能够使用main.php的最后一次Ajax调用的$ _GET参数在filter-column中执行一个新的filter-action ...这些参数在Firebug选项卡Net-tab XHR - tab Parameters中显示正常。 ......

但是我找不到一种方法来检索参数并将它们放在我的函数中,它触发了Ajax调用:

     function updateStatus(content_show, data) {

     jQuery.ajax({
         method: "get",
         url: content_show,
         data: data,
         beforeSend: function(){
            jQuery("#target").html('<p><img src="images/ajax_load.gif" /></p>');
            }, //show loading just when link is clicked
         success: function(html) {

             // update status element            
            jQuery('#target').show("slow");
            jQuery('#target').html(html);
            }

     });
 }

在我的过滤器文件中,我有一个功能来检查和取消选中复选框并启动ajax调用:

function check_them(obj,URL) {
  var getstr = "";
  var man_id_selected ="";

 for (i=0; i<obj.getElementsByTagName("input").length; i++) {
    if (obj.getElementsByTagName("input")[i].type == "checkbox") {

       if (obj.getElementsByTagName("input")[i].checked) {

        getstr = "" + obj.getElementsByTagName("input")[i].name + "=";
        man_id_selected += obj.getElementsByTagName("input")[i].value + "_";
       } else {
     <!--     getstr += obj.getElementsByTagName("input")[i].name + "=&";-->
       }
    }

  }
        getUrlStatus('main.php', function(status) { // try to find $_GET parameters of main.php
          alert(status);
           });
  updateStatus(URL, getstr+man_id_selected);    
   }

在这里,我也尝试用以下方法找到XHR参数:

 function getUrlStatus(url, callback) {
     jQuery.ajax({
         url: url,
         complete: function(xhr) {
             callback(xhr.status);

         }
     });
 }

但后者当然只会返回状态200而不是Paramters ....

我非常感谢任何帮助和评论!

阿尔扬

修改

经过几天的阅读和测试后,我几乎通过更改原始PHP代码和函数来解决问题,以便通过回调正确格式化函数updateStatus:

     function updateStatus(url, base_url, new_parameters, old_parameters) {

     jQuery.ajax({
         method: 'get',
         url: base_url,
         data: new_parameters,
         beforeSend: function(){
            jQuery("#target").html('<p><img src="images/ajax_load.gif" /></p>');
            }, //show loading just when link is clicked
         complete: function(){ 
            jQuery("#target").hide("fast");
            }, //stop showing loading when the process is complete


         success: function(html) {
             // update status element            
            jQuery('#target').show("slow");
            jQuery('#target').html(html);
            callback(this.url)
         }
     });
 }

...现在我只有轻微的问题,在PHP中调用新的url到$ url。我将详细说明并可能发布一个新主题。

Tnx无论如何!

1 个答案:

答案 0 :(得分:7)

为了将来参考,如果您使用的是jQuery 1.4+,则成功函数实际上接受3个参数,只是后两个是可选的,data通常是唯一需要的。

  

成功(data,textStatus,   XMLHttpRequest):函数

     

一个功能   如果请求成功,则调用。该   函数传递三个参数:   从服务器返回的数据,   根据'dataType'格式化   参数;一个字符串描述   状态;和XMLHttpRequest对象   (从jQuery 1.4开始提供)。这是   阿贾克斯事件。

所以下次如果你需要获得有关XHR响应的更多信息,你可以像这样设置你的成功函数:

success: function(data, status, xhr) {
    // tests with status and xhr, etc...
}