文章出處
注意,getregion.aspx中,在輸出JSON數據時,一定要用Request.QueryString["jsoncallback"],將獲 取的內容放到返回JSON數據的前面,假設實際獲取的值為42342348,那么返回的值就是 42342348([{"_name":"湖南省","_regionId":134},{"_name":"北京 市","_regionId":143}])
因為getJSON跨域的原理是把?隨機變一個方法名,然后返回執行的,實現跨域響應的目的。
因發現有不少博友發園內短信問及JS的跨域問題,我想很多程序員的腦海里面還認為JS是不能跨域的,其實這是一個錯誤的觀點;有很多人在網上找其解 決方法,教其用IFRAME去解決的文章很多,真有那么復雜嗎?其實很簡單的,如果你用JQUERY,一個GETJSON方法就搞定了,而且是一行代碼搞 定。
下面開始貼出方法。
//跨域(可跨所有域 名)
$.getJSON("http://user.hnce.com.cn/getregion.aspx?id=0&jsoncallback=?",function(json){
//要求遠程請求頁面的數據格式為: ?(json_data)
//例如:
//?([{"_name":"湖南省","_regionId":134},{"_name":"北京 市","_regionId":143}])
alert(json[0]._name);
});
$.getJSON("http://user.hnce.com.cn/getregion.aspx?id=0&jsoncallback=?",function(json){
//要求遠程請求頁面的數據格式為: ?(json_data)
//例如:
//?([{"_name":"湖南省","_regionId":134},{"_name":"北京 市","_regionId":143}])
alert(json[0]._name);
});
注意,getregion.aspx中,在輸出JSON數據時,一定要用Request.QueryString["jsoncallback"],將獲 取的內容放到返回JSON數據的前面,假設實際獲取的值為42342348,那么返回的值就是 42342348([{"_name":"湖南省","_regionId":134},{"_name":"北京 市","_regionId":143}])
因為getJSON跨域的原理是把?隨機變一個方法名,然后返回執行的,實現跨域響應的目的。
具體getJSON的使用說明,請參考JQUERY手冊。
下面一個是跨域執行的真實例子:
代碼
<script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
//跨域(可跨所有域名)
$.getJSON("http://e.hnce.com.cn/tools/ajax.aspx?jsoncallback=?", { id: 0, action: 'jobcategoryjson' }, function(json) {
alert(json[0].pid);
alert(json[0].items[0]._name);
});
</script>
<script type="text/javascript">
//跨域(可跨所有域名)
$.getJSON("http://e.hnce.com.cn/tools/ajax.aspx?jsoncallback=?", { id: 0, action: 'jobcategoryjson' }, function(json) {
alert(json[0].pid);
alert(json[0].items[0]._name);
});
</script>
作者:Taven.李錫遠
不含病毒。www.avast.com |
全站熱搜
留言列表