2012-08-31 33 views
1

我在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"); 
?> 

您的幫助將不勝感激, 劉松濤

回答

1

嘗試在阿賈克斯設置async: true屬性。 10秒可被視爲超時。

+0

哇,非常感謝你,這作品!我還沒有完全理解異步財產的含義。再次感謝您的幫助,祝您有美好的一天! – seanl

+0

yw .. async(異步)意味着瀏覽器將在後臺嘗試連接,並且在響應時不會暫停主要活動。 – KDaker

0

感謝一個bug在Safari我想是因爲相同的代碼工作正常,在瀏覽器只休息休息野生動物園如果異步:假的則有

相關問題