我在 Safari 中遇到了 jQuery ajax() 的一些问题,所以我创建了一些简单的代码来测试。
向 PHP 文件发送一个请求,10 秒后,在所有其他浏览器中,它会收到“返回数据”并提示“成功”然后“完成”;但在 Safari 中,它会提示“错误”和“已完成”,并且无法获取任何数据。
如果只是将 10 秒更改为 9 (sleep(9);),它也可以在 Safari 中使用。那么为什么 10 秒对于 Safari 来说是一个临界点呢?如何使 Safari 的功能与其他浏览器的 ajax() 一样好?
这是 HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#submit").click(function () {
$.ajax({
async: false,
cache: false,
type: "POST",
timeout: 10000,
url: "processor.php",
dataType: "json",
success: function (data) {
$("#status").html(data);
alert('succeeded');
},
error: function (request, status, error) {
alert('error');
},
complete: function () {
alert('completed')
}
});
return false;
});
});
</script>
</head>
<body>
<div>
<input id="submit" type="button" value="send request" />
</div>
<div id="status"></div>
</body>
</html>
这是PHP代码:
<?php
sleep(10);
echo json_encode("Returned Data");
?>
您的帮助将不胜感激,肖恩·刘