2009-01-27 115 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