Почему мой обратный вызов не вызывается только на одной странице? - PullRequest
1 голос
/ 19 апреля 2011

Я использую jQuery, чтобы получить JSON, а затем подключить его к некоторым элементам и отобразить на моей странице.

Отлично работает на всех страницах , за исключением one , где ответом является сама страница.

Я поместил alert() s в обратных вызовах (success и complete), и они никогда не запускаются (хотя Firebug показывает запрос, возвращающий 200 OK, который должен вызвать success обработчик).

Я не знаю, что делать, я никогда не сталкивался с этим раньше.

Вот код jQuery, который я использую:

var specials = (function() {

    var specials = false,
        specialsAnchor;

    var init = function() {
        specialsAnchor = $('#menu-specials a');

        specialsAnchor.click(function(event) {
            event.preventDefault();
            if (specials != false && specials.is(':visible')) {
                hide();
            } else {
                show();
            }

        });
    };

    var load = function(callback) {

      specialsAnchor.addClass('loading');

      specials = $('<div />', { 'id': 'specials' }).hide().appendTo('#header');

      var specialsUl = $('<ul />').appendTo(specials);

      $.ajax(specialsAnchor.attr('href'), {
          dataType: 'json',
          success: function(data) {

            $.each(data, function(i, special) {

                specialsUl.append('<li><h4>' + special.heading + '</h4><p>' + special.content + '</p></li>');

            });
            specialsAnchor.removeClass('loading');
            callback.call();

         }

      });

    }

    var show = function() {
      if (specials == false) {
        load(show);
        return;
      }
      specials.slideDown(500);
    }

    var hide = function() {
      specials.slideUp(500);
    }

    $(init);

})();

Что происходит?

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Я заметил, что вы включаете jquery.validate на этой странице, но не остальные.Проверка jQuery с jQuery> 1.5 вызывает некоторые проблемы с вызовами AJAX.

Я понимаю, что связанный вопрос / ответ не совсем то, что вы видите, но я видел все виды странных проблем с вызовами AJAX и этой комбинацией validate и jQuery, поэтому я подумал, чтоСтоит упомянуть.

Надеюсь, это поможет.

0 голосов
/ 19 апреля 2011

Это, вероятно, не полный ответ, но может быть шагом в правильном направлении. Используя Charles Proxy , он появляется на других ваших страницах, когда я нажимаю на спецпредложения, он отправляет запрос на http://www.toberua.com/~new/specials, однако на странице contact us мы вместо этого отправляем запрос ajax на http://www.toberua.com/~new/contact-us (что, конечно, не JSON)

Еще одна интересная заметка: XMLHttpRequest на других страницах правильно устанавливает заголовок Accept (то есть Accept application/json, text/javascript, */*; q=0.01, тогда как на странице contact-us он установлен на Accept */*). Держу пари, что вызывается другая ветвь кода ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...