1

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

4

1 に答える 1