0

JQuery タイムアウトの使用に関する問題が見つかりました。スクリプトを含むページがあり、タイムアウトが設定されており、サーバーからの応答を待っています。問題は、タイムアウトを実行する必要がある場合、つまり「アクションなし」です。サーバー側では接続が10秒間オンになっているため(ただし、タイムアウトは5秒に設定されています)、スクリプトはサーバーとの接続を中断してサーバーの応答を待機しないと思います。サーバーがクライアントとは異なるドメイン名で動作する場合、この問題が発生しますが、サーバーとクライアントがローカルで動作する場合、この問題は発生しません。

このエラーが発生したため、またはスクリプト接続を閉じる方法について考えがありますか?

// client 

$.ajax({

    type: "GET",

    url: "some.php",

    data: "name=John&location=Boston",

    timeout: 5000,

    success: function(msg){

        alert( "Data Saved: " + msg );

    },
    error: function(request, errorType, errorThrown){

        alert("opppsssss .... ");
    }
});

およびサーバーコード:

//some.php

< ?

//simulate long task

sleep(10); //sleep 10 seconds

//send response

echo "some test data";

? >

よろしくお願いします

ドメニコ

4

1 に答える 1

3

あなたはそれを見て後ろから前にそれをやっています。タイムアウトを 5000 ミリ秒 (5 秒) に設定したので、サーバー側のコードの応答に 5 秒以上かかると、タイムアウトになります。あなたは睡眠をとっています(10); これは、指定されたタイムアウトの 2 倍の長さである 10 秒間スリープします。これを修正する方法は、次のようにすることです。

// client 
$.ajax({
    type: "GET",
    url: "some.php",
    data: "name=John&location=Boston",
    timeout: 10000,

    success: function(msg){
        alert( "Data Saved: " + msg );
    },
    error: function(request, errorType, errorThrown){
        alert("opppsssss .... ");
    }
});

そしてサーバーコード:

//some.php
< ?
    //simulate long task
    sleep(5); // sleep 5 seconds!
    //send response
    echo "some test data";
? >

うまくいけば、それは役に立ちます。

于 2009-01-28T17:08:08.967 に答える