回覆列表
  • 1 # 使用者3136867717565

    Jquery ajax在請求不同域名(網路)的URL時,由於瀏覽器安全限制(同源策略)是不允許請求的,將會發生錯誤。如果想要在這樣的場景下獲取返回的資料,可以參考下面的方法:

    1、搭建伺服器做代理捉取跨域請求返回的資料,本地應用頁面的ajax請求建立的代理伺服器就能間接的實現這樣的需求。但是此種做法較為複雜,不建議使用;

    2、使用jsonp跨域訪問,這種方法是較為普遍的解決方案,其實現原理是:HTML的<script>標籤是可以突破同源策略從其他來源獲取資料,所以可以透過<script>標籤引入jsonp檔案,然後透過一系列JS操作獲取資料。

    具體實現步驟如下:

    利用本地頁面js建立一個<script>元素,地址指向第三方的API網址,形如:

    <script src="http://www.example.net/api?param1=1&param2=2"></script>

    提供一個回撥函式來接收資料(函式名可約定,或透過地址引數傳遞), 第三方產生的響應為json資料的包裝(故稱之為jsonp,即json padding),形如:

    callback({"name":"hax","gender":"Male"})

    這樣瀏覽器會呼叫callback函式,並傳遞解析後json物件作為引數。本地指令碼可在callback函數里處理所傳入的資料。

    示例程式碼:

    <script>

    var url = "http://localhost:8080/crcp/rcp/t99eidt/testjson.do?jsonp=callbackfunction";

    var script = document.createElement("script");

    script.setAttribute("src", url); //load javascript

    document.getElementsByTagName("head")[0].appendChild(script);

    //回撥函式

    function callbackfunction(data){

    var html=JSON.stringify(data.RESULTSET);

    alert(html);

    }

    </script>

    使用jsonp需要後端程式碼配合, 後臺返回的json外面需要由回撥函式包裹。

  • 中秋節和大豐收的關聯?
  • 電梯電路圖講解?