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); 它休眠 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 回答