Ajax 跨域請求


客戶端JS:

 1 var xhrurl = 'http://localhost:8001/Ajax/ticketNotify.ashx?cu=kefu1';
 2 $.ajax({
 3         type : "get",
 4         async : false,
 5         url :xhrurl, 
 6         cache : false,
 7         dataType : "jsonp",
 8         jsonp: "callbackparam",
 9         jsonpCallback:"jsonpCallback1",
10         success : function(json){
11             alert(json[0].name);
12         },
13         error:function(e){
14             alert("error");
15         }
16     });

服務端代碼:

1             String callbackFunName = context.Request["callbackparam"];
2             context.Response.Write(callbackFunName + "([ { \"name\":\"John\"}])");

PS:客戶端的jsonp參數是用來通過url傳參,傳遞jsonpCallback參數的參數名,比較拗口,通俗點講:

jsonp: "callbackparam"
jsonpCallback:"jsonpCallback1"

這兩個參數最終會拼接在請求的url后面,變成 http://www.xxx.com/ajax/xxx.ashx?callbackparam=jsonCallback1
服務端要獲取這個參數值:"jsonCallback1" ,拼接在要輸出的JSON數據最前面,不然就算請求成功你也只會看到警告:
Resource interpreted as Script but transferred with MIME type text/plain:

卻看不到success定義的函數執行。



順帶一提:
在chrome瀏覽器里,還可以在服務端設置header信息
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
來達到跨域請求的目的,並且不需要設置ajax以下參數
dataType : "jsonp",
jsonp: "callbackparam",
jsonpCallback:"jsonpCallback1"

以正常ajax請求方式就可以獲得數據。

 


 

 
        
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM