簡體   English   中英

jQuery.ajax-為什么不起作用?

[英]jQuery.ajax - Why does it not work?

我只是無法使Ajax服務正常工作。 $.get("http://google.com")簡單類不起作用。 另外,此代碼也不起作用:

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    </head>
    <body>
        <script>

        $.ajax({
            url:        "http://google.com",
            dataType:   "html",
            success:    function(data, status) {
                console.log("Success:");
                console.log("    Data: " + data);
                console.log("    Status: " + status);
            },
            error:      function(request, status, error) {
                console.log("Error:");
                console.log("    Request: " + request);
                console.log("    Status: " + status);
                console.log("    Error: " + error);
            },
        });

        </script>
    </body>
</html>

保存在test.html

這是控制台上的輸出:

Error:
    Request: [object Object]
    Status: error
    Error:

我猜這些是返回對象的重要值:

readyState          0
responseText        ""
status              0
statusText          "error"

為什么請求不起作用? 謝謝,

您不能使用AJAX來訪問類似的跨域腳本。 這是由於同源策略 -出於安全原因已實施了以下措施:

這種機制對現代Web應用程序具有特殊意義,因為Web服務器廣泛依賴HTTP cookie來維持經過身份驗證的用戶會話,因為服務器根據HTTP cookie信息進行操作以顯示敏感信息或執行狀態更改操作。 必須在客戶端維護不相關站點提供的內容之間的嚴格分隔,以防止丟失數據機密性或完整性。

因此,您有幾種選擇:

  1. 只需在您自己的服務器上調用腳本
  2. 服務器上的呼叫腳本,可以與第三方站點/應用程序/腳本進行通信
  3. 使用JSONPXML作為回調格式。

由於同源策略,您無法向另一個域發出請求。 有關更多信息,請參見http://api.jquery.com/jQuery.ajax/

您可以使用JSONP來實現跨域通信。

http://en.wikipedia.org/wiki/JSON#JSONP

但是對於純HTML,您必須位於同一域中。

 $.ajax({
        url:        "http://google.com",
        dataType:   "jsonp",
        success:    function(data, status) {
            console.log("Success:");
            console.log("    Data: " + data);
            console.log("    Status: " + status);
        },
        error:      function(request, status, error) {
            console.log("Error:");
            console.log("    Request: " + request);
            console.log("    Status: " + status);
            console.log("    Error: " + error);
        },
    });

編輯:

但是,如果您的網址未返回有效的格式化json,則您的請求將失敗。 有關工作示例,請檢查:

http://jsfiddle.net/S3tAR/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM