2011-01-19 55 views
2

在閱讀了很多帖子和jQuery文檔之後,我的第一個問題是...新的jQuery ...如何在jQuery Ajax調用之後檢索XHR參數?

在我的項目中,我有一個包含jQuery Ajax調用的多個過濾器的列,以減少產品數量顯示在main.php中。工作正常,但在例如對響應文件main.php中的結果進行排序或單擊分頁之後,我需要能夠在filter-column中使用$ _GET參數在filter-column中執行新的過濾器操作最後的Ajax調用main.php ...這些參數在Firebug選項卡中顯示正常Net - 選項卡XHR - 選項卡參數....

但我找不到方法來檢索參數並將它們放入我的啓動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,而不是參數....

我會非常感謝任何幫助和意見!

阿爾揚

編輯

經過閱讀和測試的日子裏,我幾乎解決了這個問題,通過改變我原來的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無論如何!

+0

我有困難去cyphering什麼東西被要求在這裏?你顯然有某種問題,但看起來你不能很好地解釋問題是什麼或已經解決了問題+關閉 – 2011-01-20 17:25:18

+0

我能理解你錯過了這個問題,因爲在寫作的時候我認爲我正在做一些事情Ajax調用錯誤...最後,我發現問題出在我的PHP代碼中,用於觸發ajax調用...我認爲這是脫離主題來解釋我對PHP代碼的調整,但正如您在重新格式化中看到的函數updateStatus。我已經分割完整的網址(其中包含所有$ _GET參數)。分開傳遞base_url和參數。希望能夠澄清迄今爲止​​的解決方案!謝謝! – Arjan 2011-01-20 17:40:48

回答

7

爲了將來的參考,如果你使用jQuery 1.4+,成功函數實際上接受3個參數,它只是第二個是可選的,而data通常是唯一需要的。

成功(數據,textStatus, XMLHttpRequest的):功能

如果請求成功,以 一個函數被調用。 函數獲得三個參數: 從服務器返回的數據, 根據'dataType' 參數格式化;描述 狀態的字符串;和XMLHttpRequest對象 (自jQuery 1.4起可用)。這是一個Ajax事件 。

如果你需要得到有關XHR響應更多的信息,以便下一次

,你可以設置你的成功的功能,像這樣:

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