javascript ajax指令碼跨域調用詳解

來源:互聯網
上載者:User

今天終於有點時間研究了一下javsscript ajax 指令碼跨域調用的問題,先在網上隨便搜了一下找到一些解 決的辦法,但是都比較複雜。由是轉到jquery.chm使用者手冊當中找到一些程式碼片段關於ajax跨域調用的問題。 程式碼片段如下:

crossDomain   mapV1.5

預設: 同域請求為false

跨域請求為true如果你想強制跨域請 求(如JSONP形式)同一域,設定crossDomain為true。這使得例如,伺服器端重新導向到另一個域。

這 裡強調如是ajax的跨域調用,dataType一定要是jsonp的格式。(什麼是jsonp這裡不做解釋,可以google一下 。)

令外還有一些程式碼片段:如下所示:

dataType  String

預期伺服器返回的資料類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 資訊來智能判斷 ,比如XML MIME類型就被識別為XML。在1.4中,JSON就會產生一個JavaScript對象,而script則會執行這個腳 本。隨後伺服器端返回的資料會根據這個值解析後,傳遞給回呼函數。可用值:

"xml": 返 回 XML 文檔,可用 jQuery 處理。

"html": 返回純文字 HTML 資訊;包含的script標籤會 在插入dom時執行。

"script": 返回純文字 JavaScript 代碼。不會自動緩衝結果。除非設 置了"cache"參數。'''注意:'''在遠程請求時(不在同一個域下),所 有POST請求都將轉為GET請求。(因為將使用DOM的script標籤來載入)

"json": 返回 JSON 資料 。

"jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl? callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回呼函數。

"text": 返 回純文字字串

jsonp                                       String

在一個jsonp請求中重 寫回呼函數的名字。這個值用來替代在"callback=?"這種GET或POST請求中URL參數裡的 "callback"部分,比如{jsonp:'onJsonPLoad'}會導致將"onJsonPLoad=?"傳給 伺服器。

jsonpCallback                String

為jsonp請求指定一個回呼函數名。這個值將用來取代jQuery自動產生的隨機函數名。這 主要用來讓jQuery產生度獨特的函數名,這樣管理請求更容易,也能方便地提供回呼函數和錯誤處理。你也可 以在想讓瀏覽器緩衝GET請求的時候,指定這個回呼函數名。

以上幾個重要程式碼片段,重點是紅色字的 部分,要求跨域調用ajax要指定一個callback handler函數。

看了這麼多大家也一定是看膩了,直接 將上述的程式碼群組合。此段代碼在域:test.com中,現在要調用http://jks.com/JsTest.aspx進行ajax驗證。代 碼如下:

<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <script src="js/jquery-1.4.1.js" type="text/javascript"></script>    <script type="text/javascript">            function invokeRemoteMethod() {            $.ajax({                url: 'http://jks.com/JsTest.aspx?type=invoke&method=add&time=' + Math.random(),                type: 'get',                dataType: 'jsonp',                jsonp: "callback",                data: '',                success: function (data) {                    alert(data.msg);                },                error: function (message) {                    alert(message);                }            });        }    </script></head><body>    <form id="form1" runat="server">        <div>            <input type="button" id="but_invoke" value="調用" onclick="invokeRemoteMethod();" />    </form></body></html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.