$.getJSON()方法跨域 去取得服務器的json對象的時候,url的后綴最后帶一個"callback=?"的參數作為成功的回調函數;如:
- var url = "${BIPJS}/intf/accountsOfRefuseEmail.jsp?act=add&siteId=${LANG.siteId}&accountId=${loginId}&callback=?";
- $.getJSON(url, {} , function(data) {
- var code = data.code;
- if(code == 0){
- $('#floatOne').myFadeIn();
- }
- });
此時返回的data是一個json對象;相應地,服務器返回字符串應該要這種樣式:
- String callback = T.stringValue(getRequestParams(request,"callback"),"");
- JSONObject jo = new JSONObject();
- // put key/value in jo
- out.print(callback + "(" + jo + ")");
原理:Jquery在解析請求callback=?的時候,會自動生成一個callback=jsonp***的字符串,這個字符串jsonp***在成功回調的時候作為一個方法,被Jquey自動執行,參數是一個json格式的字符串(這里是data)。相應地;服務器返回的字符串要這種形式:jsonp***(JSONObject)。
如:剛上面的url被Jquey解析成:
-
Request URL:http://localhost.pcauto.com.cn:12385/intf/accountsOfRefuseEmail.jsp?act=add&siteId=2&accountId=388&callback=jsonp1381976698163&_=1381976708919
服務器返回的字符串形式:
jsonp1381976698163({"code":0,"msg":"增加用戶成功"})
Jquery的回調方法jsonp1381976698163(jsonStr)就是要把字符串jsonStr轉換成josn對象,這里就是轉換成data這個json對象。