2009-01-27 124 views
0

我發現使用JQuery超時有問題,我有一個腳本頁面,它設置了超時並等待來自服務器的響應。問題是超時必須執行,簡而言之,它是「不採取行動」。我認爲腳本不會中斷與服務器的連接並等待服務器響應,因爲在服務器端連接開啓10秒(但超時設置爲5秒)。 當服務器在不同的域名和客戶端上工作時,我看到這個問題,而當服務器和客戶端在本地工作時,這個問題沒有。JQuery超時問題

你有一個想法,因爲這個錯誤發生或如何關閉腳本連接?

// 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"; 

? > 

問候

多梅尼科

回答

3

你被它的外觀做回至前。您已將超時設置爲5000毫秒(5秒),因此如果服務器端代碼的響應時間超過5秒,則會超時。你在睡覺(10);睡眠時間爲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"; 
? > 

希望幫助。

+0

在這裏的答案困惑我,並沒有回答我的問題。難道不應該是相反的方式嗎(比如OP的帖子)?問題在於客戶端會超時並執行某些操作,並且爲了模擬超時行爲,服務器必須在客戶端設置的實際超時時間內休眠較長時間。 – Antony 2012-04-25 15:51:13