2013-07-05 98 views
1

問題是,一旦pjaxed請求完成,pjax也會啓動一個正常的GET請求。奇怪的pjax行爲:GET請求在pjax請求後啓動

我的代碼是這樣的:

$(document).on('pjax:end', function(event){ 
    alert("end"); 
    inpjax = false; 
}); 

$(document).on('pjax:timeout', function(event) { 
    alert("timeout") 
    event.preventDefault(); 
}); 

$(document).on('pjax:error', function() { 
    alert("error"); 
}); 

$(document).on('pjax:success', function() { 
    alert("success"); 
}); 

$(document).ready(function(e) { 
    inpjax = false; 
    $('.pj').click(function(e) { 
     e.preventDefault(); 
     if(!inpjax) 
     { 
      inpjax = true; 
      $.pjax({ 
       timeout: 5000, 
       url:  $(this).attr('href'), 
       container: '#codeport' 
      });  
     } 
    }); 
}); 

正如你所看到的,它應該給我不同的stiuations警報,但我只得到pjax警告:結束事件,並警告後,pjax同修正常的GET請求,時間是這樣的:

[17:36:02.002] GET http://localhost/abstract?_pjax=%23codeport [HTTP/1.1 200 OK 86 ms] 
[17:36:02.170] GET http://localhost/abstract [HTTP/1.1 200 OK 73 ms] 

我沒有得到超時,錯誤或成功的警報。

這可能是什麼原因造成的?請幫助...

SOLUTION:

的問題竟然是我的服務器端的代碼,用一整頁響應,而這是造成第二個GET請求。所以如果這個問題也發生在你身上,請確保你的服務器端代碼正確響應PJAX請求。

+0

你們的服務器支持pjax獲得事件消息的元件?你讀過這本手冊嗎? https://github.com/defunkt/jquery-pjax? –

+0

也許爲此使用yui很重要? http://yuilibrary.com/yui/docs/pjax/ –

+0

@ Arekkusandaa.Irujasukin這是對您刪除的消息的回覆: 爲什麼它會如何使用它? 不管怎樣,我改變了這樣的代碼: 'if($ .support.pjax){ $(document).on('click','.pj',function(event){ \t var container =「# codeport 「; \t $ .pjax.click(事件,{集裝箱:集裝箱}) })} 其他 警報(」 不pjax支持「);' 但同樣的事情正在發生,什麼都沒有改變。 [http:// localhost/abstract] _pjax =%23codeport [HTTP/1.1 200 OK 96 ms] [18:11:16.069] GET http:// localhost/abstract [HTTP/1.1 200 OK 91 ms]' 另外,我的瀏覽器當然支持ajax。 –

回答

0

例如:

<!DOCTYPE html> 
<html> 
<head> 
    <!-- styles, scripts, etc --> 
</head> 
<body> 
    <h1>My Site</h1> 
    <div class="container" id="pjax-container"> 
    Download content from <a href="/page/2"> the other site </a>?. 
    </div> 
</body> 
</html> 

嘗試添加pjax到你想從像$(document).pjax('a', '#pjax-container')

+0

所以在我的情況下,我做到了這一點:'$(document).pjax('。pj','#codeport');' 但是和以前的代碼沒有區別。 –

+0

最後我找到了解決方案,似乎你對serverside是正確的,因爲我使用了錯誤的邏輯運算符,pjax請求正在加載整個頁面。我認爲這不是問題,但與我的猜測相反,這是第二次請求。所以我現在修好了,它完美的工作。我不敢相信我做了這樣一個愚蠢的錯誤:D感謝你的時間,我選擇這個答案是因爲你的時間。 –

+0

@MahmutAkkuş謝謝你,男士,我真的很感激它 –