【发布时间】:2011-07-09 00:41:57
【问题描述】:
我有一个 jQuery ajax 调用,它转到服务器 backend.php 脚本并被告知休眠 13 秒(或更长时间),然后用一个简单的测试消息进行响应。我看到的是 ajax 成功功能在 10 秒后触发(在萤火虫中观察到 200 响应),而服务器没有实际响应。如果我将响应延迟设置为小于 10 秒,我会完美地收到响应消息。
这是你以前见过的吗?是否发生了一些默认的 php 超时?
ajaxcall = $.ajax({
type: "GET",
url: "backend.php",
async: true,
cache: false,
dataType: 'json',
timeout: 30000,
/* Timeout in ms. Default to 30000 (30 seconds) */
data: "TimeStamp=" + TimeStamp,
success: function(data) {
if (data !== null) {
$('#TextHistory').append(data.message);
if (data.timestamp != 0)
{
TimeStamp = data.timestamp;
}
}
setTimeout(
waitForMsg, /* Request next message */
5000 /* ..after 5 seconds, default to 5000*/ );
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#TextHistory').append('<p>Error:' + errorThrown + '</p>');
setTimeout('waitForMsg()',"15000"); /* milliseconds (15seconds) default to 15000 */
}
});
}
..在服务器端我只是这样做:
<?php
header('Content-Type: application/json');
sleep(13); // Changing this to test it. Will only work if less than 10
$When = date("H:i:s",strtotime("now"));
$response["message"] = "<p>Small Test $When</p>";
$response["timestamp"] = 123456789;
echo json_encode($response);
?>
【问题讨论】:
标签: php jquery ajax timeout response