Как может jQuery .load потерпеть неудачу? - PullRequest
6 голосов
/ 15 сентября 2011

Я использую простой ajax-загрузчик для получения контента на WordPress.

$("#page_preview").load("ajaxloader/", function(response, status, xhr) {
      if (status == "error") {
        alert("Sorry but there was an error");
      }
      else
      {
          $('#page_preview').fadeIn(300);
      }
    });
return;

Когда я загружаю конкретный пост со встроенной картой Google, очевидно, что-то идет не так НО заходя внутрь оператора if, firebug показывает, что он выходит за рамки этого кода.Ни if, ни else не ударили.

Используя отладчик eclipse, я обнаружил, что страница загружается успешно, но когда он возвращает данные в метод .load(), последний прерывается.

Есть идеи о том, что может происходить?

Ответы [ 3 ]

4 голосов
/ 15 сентября 2011

Как

<script>
    // as of jQuery 1.5.x ++
    var pagePreview = $("#page_preview");
    $.get("ajaxloader/").success(
        function(response, status, jqXhr) {
            alert("Success!");
            pagePreview.empty();
            pagePreview.append(response);
            // i feel you need to parse the response for the google map div, and perform another $.get() of the google url?
        }).error(function(response, status, jqXhr) {
        alert("These are not the droids you are looking for. move along.");
    }).complete(function(response, status, jqXhr) {
        alert("Complete!");
    });
</script>

# Почему

jQuery.load () предоставит вам документацию..load эквивалентно этому

Он приблизительно эквивалентен $ .get (url, data, success ), за исключением того, что это метод, а не глобальная функция, и он имеетнеявная функция обратного вызова.Когда обнаружен успешный ответ (т. Е. Когда textStatus имеет значение «success» или «notmodified»), .load () устанавливает HTML-содержимое сопоставленного элемента для возвращаемых данных.

Вам необходимо зарегистрироватьсяв $.ajax( complete:function(responseText, textStatus, XMLHttpRequest)){}); и проверьте значение textStatus.если все в порядке, загрузите данные в пункт назначения $('selector') самостоятельно.Или исправьте .load(), наблюдая за вашей сетью xmlHttpRequests в chrome (ctrl + shift + j) или какой-либо сетевой вкладкой в ​​firebug, и отладьте проблему с помощью значения 'url' в $('selector').load( 'url', function(response, status, xhr){})

0 голосов
/ 25 сентября 2011

использовать функцию $ .ajax например,

    $.ajax({
      url: "test.html",
      context: document.body,
      success: function(){
        //when Successfully executed
      },
      error: function(){
        //When Error Fires
      }
    });
0 голосов
/ 16 сентября 2011

Простой способ отладки - посмотреть на запросы XHR с помощью вкладки консоли firebug.Может быть проблема с URL-адресом запроса, и вы не можете получить какие-либо данные обратно, или, возможно, вы получили ошибку или что-то в этом роде.С помощью firebug вы можете легко увидеть, что возвращает сервер.

Поскольку .load загружается только при успехе, вы можете добавить

console.debug("In .load function"); 

в начале функции.Опять же, проверяя с помощью firebug, вы можете узнать, действительно ли вызван обратный вызов .load.

...