問題は、pjaxedリクエストが終了するとすぐに、pjaxも通常のGETリクエストを開始することです。
私のコードは次のようなものです:
$(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'
});
}
});
});
ご覧のとおり、さまざまな状況でアラートが表示されるはずですが、pjax:endイベントでのみアラートが表示され、そのアラートの後、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]
タイムアウト、エラー、または成功のアラートが表示されません。
これを引き起こしている可能性があるのは何ですか?助けてください...
解決:
問題は、サーバーサイドコードがフルページで応答していて、それが2番目のGETリクエストを引き起こしていたことであることが判明しました。したがって、この問題が発生した場合は、サーバー側のコードがPJAX要求に正しく応答することを確認してください。
例:
<!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')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加