1

私の知恵ではここで終わります。

このスクリプトを実行しています

<script type="text/javascript" charset="utf-8">
    jQuery(window).ready(function(){
        //alert('running');
        var sold = false;

        var leads = [            
            ["one", 120],

            ["two", 0]
        ];

            jQuery.each(leads, function(index, value) {
                var _data = "";
                jQuery.ajax({
                    url: "/wp-content/plugins/cUrl/submit_lead.php?lead=" + value[0],
                    dataType: "json",
                    //contentType: "application/json; charset=utf-8",
                    timeout: value[1] * 1000, //Yes i need to wait 120 seconds for "one"
                    async: false,
                    cache: false
                }).success(function(data) {
                    _data = data;
                    console.log(data.status + " Lead: "+ value[0]);
                    if (data.status == "sold") {
                        sold = true;
                        jQuery.ajax({
                            url: "/wp-content/plugins/cUrl/submit_lead.php?resetSession",
                            dataType: "json",
                            //contentType: "application/json; charset=utf-8",
                            async: false,
                            cache: false
                        }).success(function() {
                            //Silence is golden.
                        });
                        window.location.href = data.link;
                    }
                }).error(function(jqXHR, textStatus){
                    console.log("ERROR: " + textStatus + " Lead: " + value[0]);
                });

                if (_data.status == "sold") {
                    return false;
                }
            });

            if (!sold) {
                //If we get here, None of the leads were sold.
                jQuery.ajax({
                    url: "/wp-content/plugins/cUrl/submit_lead.php?resetSession",
                    //contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: false,
                    cache: false
                }).success(function(data) {
                  //Silence is golden.
                });
                window.location.href = '/thank-you.php';
            }        

    });
</script>

スクリプトはいくつかの情報を受け取り、それを submit_lead.php に送信します。これは、ステータス、メッセージ、およびリンクを含む json 応答を返します。このリンクを取得したら、?resetSession を使用して同じスクリプトを呼び出し、ユーザーを受信したリンクにリダイレクトする必要があります。

リンクを受信した場合、次のリンクを試す意味がないため、「2」を試す前に「1」からの応答を得るまで待つ必要があるため、同期をオフにしています。

FF または Chrome でスクリプトを実行すると、正常に実行されます。リクエストの処理中に再生される小さなアニメーションがあり、リンクが返されると、それに応じてリダイレクトされます。

スクリプトが <= IE8 または Safari で実行されると、ページが半分ロードされてから待機します (アニメーションはロードされますが、アニメーション化されません)。ajax 応答が返されると、ページが突然動き出し、リダイレクトされます。

ウィンドウの準備とドキュメントの準備を試みましたが、何も機能していないようです。

任意の提案をいただければ幸いです。

読んでくれてありがとう。

4

1 に答える 1

0

コメントで言ったように、非同期をオンに戻します。

リダイレクトまたは ajax 関数からのコールバックで実行する操作を追加します。それがおそらくあなたがロックしている理由です。

于 2013-05-17T17:21:17.963 に答える