問題は、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 要求に正しく応答することを確認してください。