2014-07-12 92 views
1

位heisenbug在這裏...jquery SLOW調用get或post

在這裏有一個PHP/codeigniter應用程序。很確定控制器/型號等是健全的,沒有錯誤。總得是一個客戶端的問題...

非常簡單的代碼像這樣的頁面:

<div id="stuff">I'm empty now!</div> 

<script language="javascript"> 
$(document).ready(function(){ 
    var stuffID = <?=$id?>; 
    $.post('/event/viewStuff/'+stuffID, 
     function(response) { 
      $('#stuff').html(response); 
     } 
    ); 
}); 
</script> 

負載上述的「東西」,現在div有東西一格,加上鍊接後通過他們10的時間,這看起來像此頁:

<a href="#" onclick="$('#stuff').html('Wait please...'); $.get('http://localhost/event/viewInvitees/22/30', function(response) {$('#stuff').html(response); }); return false">Next Page</a> 

但我點擊這些鏈接,每一次,頁面凍結爲4-5秒,做什麼我不知道 - 沒有網絡活動,不沒有鉻調試器。然後,「stuff」div重新加載結果。另外 - 「Please wait」消息未顯示。奇怪的是 - 當我抽出「document.ready()」函數時,重新加載頁面,只需點擊上面那個裸露/硬編碼的分頁鏈接,事情就會像預期的那樣快速消失。

非常感謝您花時間閱讀。

NEW INFO:

Xdebug的曲線顯示任何不尋常 - 約1秒的功能呼叫返回給控制器/視圖預期返回的內容。

Chrome的探查表明這一點 - 一個愚蠢的,不明原因的閒置:

enter image description here


的 「b.event.remove()」 的jQuery函數,要帶6+秒的任何額外的洞察力?這似乎是問題?

+0

你爲什麼在你的jQuery中使用php direktly?我的意思是,如果你使用ajax/jquery post ...你可以用json處理這個。不建議像你這樣做這個! – Dwza

+0

聽起來像請求正在同步發送,但我不知道爲什麼會因爲你使用'$ .get()'。這是什麼版本的jQuery? –

+0

@Dwza我用3個不同的PHP視圖構建這個頁面 - 包裝器有我需要使用的整體「stuff」標識符。 – user3550402

回答

1

固定它 - 但不明白的根本原因:

如上所述 - 每當我點擊「下一頁」鏈接時出現了一個巨大的延遲。

Javascript分析證明,jquery 1.9.1掛在b.event.remove()上約6秒鐘。不知道爲什麼。我心想:「嗯......也許我已經觸發了一些奇怪無效的拆卸功能,那#stuff div比較大(很多子表格等)。」

所以,我想加入這個命令將鏈接點擊代碼首先清除出來:

$('#stuff').html(''); 

沒有骰子。然後我嘗試:

$('#stuff').empty(); 

同樣的交易 - 花了更長的時間。

在一個雲雀我又試圖非jQuery的方法:

document.getElementById('stuff').innerHTML = ''; 

它的工作!剩下的點擊代碼立即執行 - 不再拖延!

問題是爲什麼??????

謝謝大家!

0

嘗試在mysql中PDO使用127.0.0.1代替localhost

是這樣那是成本表現......所以只是測試它。

+0

謝謝 - 試過這個,但沒有運氣。得到一些代碼怪異... – user3550402