2012-12-03 90 views
3

我正在寫一個包含搜索框和「選項卡」的ajax搜索頁面;這個想法是,用戶輸入查詢,更改選項卡,使用新選項提交查詢,並在下面加載結果。jQuery ajax和追加 - 內容太大?

我有一個奇怪的問題,其中返回的數據('內容')的長度(?)似乎阻止我運行任何額外的JS。

請參閱下面的內容#resultsArea被設計爲當用戶在選項卡之間滑動時有幾組結果,所以如果查詢是相同的而不是發送另一個不必要的數據庫查詢,它將顯示緩存的結果。

「內容」是返回的數據 - 它似乎只要我使用它(無論是在一個警報,或打印在頁面上),我不能執行更多的JavaScript。如果我從.append函數中刪除+ content +,則該行後面的警報將會觸發。這是設計嗎?

「內容」包含相當大量的數據 - 負載和格式,所以我想知道這是否是問題所在。但是,這一切工作並顯示好,因爲它!我只想添加一些額外的JS,這樣我就可以將廣告加載到渲染的結果中,但這是困擾我的。

$.ajax({ 
type: 'POST', 
url: formUrl, 
data: formData, 
dataType: 'html', 
success: function(content) { 
    $('#resultsBit').slideUp(200); 

    if (query!=prevQuery) 
     { 
      $('#results_'+flavour).remove(); 
     } 

    alert('I will fire'); 

    $('#resultsArea').append('<div id="results_'+flavour+'" style="display:true;">'+content+'</div>'); 

    alert('I will not fire'); 

    } 
}); 

在此先感謝您的任何指針。

+0

如果Stack Overflow是任何指標,禁止複製粘貼代碼而不破壞縮進是非常困難的。 ':P' –

+0

哈哈......我的縮進絕對沒有保留! – Mhatma

+0

您是否收到超時錯誤? – 2012-12-03 18:59:16

回答

0

如果我從.append()函數中刪除+content+,該行後面的警報將觸發。這是設計嗎?

這給出了一個很大的線索,關於發生了什麼;這意味着content內的某些內容導致錯誤(實際上會引發異常),並且可以從控制檯中看到此錯誤。

沒有一個控制檯,你可以換你的代碼try { } catch塊裏面是這樣的:

try { 
    $('#resultsArea').append('<div id="results_'+flavour+'" style="display:true;">'+content+'</div>'); 
} catch (e) { 
    alert('Oh no, error: ' + e); 
} 

這應該給你一個線索,這有什麼錯content.