我在Safari中遇到了jQuery ajax()的一些問題,所以我創建了一些簡單的代碼來測試。jQuery ajax()的錯誤,如果它只在Safari中獲取數據
一個請求被髮送到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");
?>
您的幫助將不勝感激, 劉松濤
哇,非常感謝你,這作品!我還沒有完全理解異步財產的含義。再次感謝您的幫助,祝您有美好的一天! – seanl
yw .. async(異步)意味着瀏覽器將在後臺嘗試連接,並且在響應時不會暫停主要活動。 – KDaker