2011-04-19 116 views
1

這可能真的很明顯,但我無法弄清楚。爲什麼我的回調只在一頁上被調用?

我使用jQuery來獲取一些JSON,然後將其插入一些元素並將其顯示在我的頁面上。

它工作正常all pages除了one,其中響應似乎是頁面本身。

我已經把alert() S IN的回調(successcomplete),他們似乎從來沒有被解僱(雖然螢火蟲顯示請求返回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); 

})(); 

這是怎麼回事?

謝謝。

+0

其中'data.basePath'來自...我沒有看到'data'定義在任何地方。 Nevermind ..它是一個全球... – prodigitalson 2011-04-19 02:15:31

+0

@prodigitalson說了什麼,並在一個側面說明,我會認爲這是某種URL /層次結構問題。 – mattsven 2011-04-19 02:16:21

+0

@prodigitalson它在'head'元素中定義。 – alex 2011-04-19 02:17:33

回答

1

我注意到你在這個頁面上包含了jquery.validate,但沒有包含其他的。 jQuery使用AJAX調用驗證jQuery> 1.5 causes some issues

我意識到鏈接的問題並不完全是你所看到的,但我已經看到AJAX調用和驗證和jQuery的這種組合的各種奇怪問題,所以我認爲這將是值得一提的。

希望有所幫助。

+0

我永遠不會想到我自己!非常感謝:) – alex 2011-04-19 02:35:27

+0

@alex:很高興幫助!現在,我想因某種原因去度假,但...... – 2011-04-19 02:36:19

0

這可能不是一個完整的答案,但可能是朝着正確方向邁出的一步。使用Charles Proxy似乎在其他網頁,當我點擊特價商品,它使請求http://www.toberua.com/~new/specials但是接觸我們頁面的AJAX請求而不是去http://www.toberua.com/~new/contact-us(當然這不是JSON)其他

一個有趣的: 其他頁面上的XMLHttpRequest正確設置了Accept頭(即​​,而在contact-us頁面上它設置爲Accept */*)。我敢打賭有一個不同的代碼分支被調用...

+0

謝謝,我已經想出了那部分。現在只需要知道,爲什麼? – alex 2011-04-19 02:18:03

相關問題