JQuery Ajax 跨域請求


第一種方式

 

客戶端JS:

 1         function httpRequest(arg,successCallback,errorCallback){
 2               $.ajax({
 3                   type: "get",
 4                   url:serverAddress,
 5                   async: false, //是否為同步or 異步,默認同步(true)
 6                   cache:false, //請求格式為jsonp ,script默認為false ,其它為true ,  這里可以不用添加
 7                   data:arg,      //請求參數,也可以拼接在url后邊
 8                   dataType: "jsonp",
 9                   jsonp:"callback",
10                   jsonpCallback :"jsoncallback",
11                   timeout : set_Timeout,         //超時處理
12                   success : successCallback,       //成功回調
13                   error : errorCallback            //錯誤回調
14               })
15           }

//調用

var arg = {name:'zs'}
httpRequest(arg,succCallback,errCallback);

function succCallback(msg){
//msg返回一個對象,解析JSON格式
}

function errCallback(){
//fail msg
}


 

服務器端代碼

 String callbackFunName = context.Request["callback"];  //jsonp :callback 對應的值,默認不寫就是callback

 context.Response.Write(callbackFunName + "(" +{ 'name':'John'}+")");

 

 

jsonp: "callback"
jsonpCallback:"jsonpCallback"

這兩個參數最終會拼接在請求的url后面,變成 http://www.xxx.com/ajax/xxx.ashx?callback=jsonCallback

ps:注意:這種方式需要客戶端與服務器端 ,同時調整下數據請求方式及服務器響應。

 

第二種方式

     PHP 解決跨域 ,在文件頭加下邊這兩句代碼,JS 就不需要JSONP。

header("Access-Control-Allow-Origin: *");
header('content-type:application/json;charset=utf8');  

  

java 解決跨越

xxx.setContentType("application/json; charset=utf-8"); 
 
xxx.getResponse().addHeader("Access-Control-Allow-Origin","*");//'*'表示允許所有域名訪

or


/*這里可以忽略*/ 服務器端要使用 request.getParameter("jsonpCallback");//客戶端請求參數 out.println(jsonpCallback+"("+resultJSON(data)+")");//返回jsonp

  

 


免責聲明!

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



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