Как получить параметры XHR после вызова jQuery Ajax? - PullRequest
2 голосов
/ 19 января 2011

В моем проекте у меня есть столбец с несколькими фильтрами с помощью jQuery Ajax Calls, чтобы уменьшить количество продуктов, отображаемых в main.php <div id="target">. Работает нормально, но, например, после сортировки результатов или щелчка по нумерации страниц в файле ответов main.php, мне нужно иметь возможность выполнить новое действие фильтра в столбце фильтра с параметрами $ _GET последнего вызова 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)
         }
     });
 }

Теперь у меня только небольшая проблема с получением и вызовом нового URL-адреса в $ url в PHP. Я подробно остановлюсь на этом и, возможно, опубликую новую тему.

1 Ответ

7 голосов
/ 20 января 2011

Для дальнейшего использования, если вы используете jQuery 1.4+, функция успеха на самом деле принимает 3 аргумента, просто вторые два являются необязательными, а data обычно единственный, который когда-либо был необходим.

success (data, textStatus, XMLHttpRequest): Функция

Функция, вызываемая в случае успешного выполнения запроса.Функция получает три аргумента: данные, возвращаемые с сервера, отформатированные в соответствии с параметром dataType;строка, описывающая статус;и объект XMLHttpRequest (доступен с версии jQuery 1.4).Это Ajax Event.

Поэтому в следующий раз, если вам понадобится больше информации об ответе XHR, вы можете настроить свою функцию успеха следующим образом:

success: function(data, status, xhr) {
    // tests with status and xhr, etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...