$.getJSON()跨域请求

目录

  1. 什么是跨域
  2. 同一域名下$.getJSON()请求
  3. 不同域名下$.getJSON()请求

什么是跨域

因为javascript同源策略的限制,a.com 域名下的js脚本无法操作b.com或是c.a.com域名下的对象.Ajax的应用中,由于安全的问题,浏览器默认是不支持javascript跨域调用的.

  1. 主域相同,子域不同,如xxx.aaa.com和yyy.aaa.com
  2. 域名相同,端口不同,如xxx.aaa.com:8000和xxx.aaa.com
  3. 域名相同,协议不同,如http://www.aaa.com/和https://www.aaa.com/
  4. 主机相同,用ip和域名的,http://127.0.0.1/和http://localhost/

都是会造成跨域的。网上有很多解决办法,下面介绍使用JQuery的getJSON方法处理跨域问题.

同一域名下$.getJSON()请求

js:

var url="http://localhost:2589/a.ashx";
$(function(){
	$.getJSON(url,function(data){
		alert (data.Name);
	})
});

服务器返回字符串:

{"Name":"loogn","Age":23}

不同域名下$.getJSON()请求

js:

var url="http://localhost:2589/a.ashx?callback=?";
$(function(){
	$.getJSON(url,function(data){
		alert (data.Name);
	})
});

服务器返回字符串:

jQuery1706543070425920333_1324445763158({"Name":"loogn","Age":23})

$.getJSON()跨域请求时的参数名callback也可换成jsoncallback,jsoncallback应该优先检测,没有再检测callback(没测试!!)

?也可是具体的函数名,这样回调函数就不能是匿名的了,用?生成只是jQuery为我们的一般操作提供的一个便利。