5

私のプロジェクト ( Symfony 2 を使用したPHP ) では、すべてのページで多くのAjaxリクエストを実行します。ブラウザー ( Google ChromeおよびFirefoxでテスト済み) がエラーを出さずにリクエストを中止しているように見えるため、私はそれらに多くの問題を抱えています。この問題の原因をテストするためにクリーン ページを実行しましたが、エラーは解決しません。ループ内で 10 個のリクエストを実行するテストを試みました(問題はないと思いますよね?)。for

これが私のコードです:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Test page</title>
    </head>
    <body>Test page.
        <script type="text/javascript" src="/js/compressed_jquery-1.8.2.min_1.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                for (var i = 0; i < 10; i++) {
                    $.get('/i18n/javaScript/pt.json', function(data) {
                        console.log(data);
                    });
                }
            });
        </script>
    </body>
</html>

そして、これはリクエストの結果がFirebugになるスクリーンショットです:

Ajax リクエストのスクリーンショット

ご覧のとおり、完了したリクエストと完了していないリクエストがあります。ブラウザーがエラーなしで 10 個の要求すべてを完了することがあります。何が原因でしょうか?


すべてのソリューションをテストしましたが、Windows、Apache、または PHP の構成の問題であると確信しています。今日、Ubuntu 13.04 (Raring Ringtail) と Apache 2.2 + PHP を実行するVirtualBox を使用してマシンにVMを構成しました。構成の問題かどうかはわかりません。この構成を見つけるにはどうすればよいですか?

4

4 に答える 4

4

リクエストを1つずつ送信することで、サーバーがいくつかの並列リクエストを拒否するのを避けることができます。

試して

$(document).ready(function () {
    var tot = 30; //to simulate 30 requests
    (function request(i){
        if(i === tot) return;
        $.get('/echo/html/?'+i, function (data) {
            console.log("success");
        }).always(function() { request(++i) });
    })(0);
});
于 2013-05-21T11:27:13.513 に答える