现在的位置: 首页 > 综合 > 正文

jQuery中ajax跨域请求

2013年10月08日 ⁄ 综合 ⁄ 共 1318字 ⁄ 字号 评论关闭

背景介绍:

现在做的课题要实现在一个没有部署在服务器上的网页中,使用ajax来加载已经 部署在服务器上的一个服务提供的数据。

先看静态页面的代码:

<html>
	<head>
		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">	
$(document).ready(function(){
	$("#go").click(ajaxget);
});
function ajaxget(){
	$.ajax({
		type : "get",
		async:false,
		url : "http://localhost/c.txt",
		dataType : "jsonp",
		jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数
		jsonpCallback:"success_jsonpCallback",//callback的function名称
		success : function(json){
			alert(json.name);
		},
		error:function(a,b,c){
			alert(a+"++"+b+"++"+c);
		}
	});
}

function success_jsonpCallback(){
	alert('back');
}
</script>
	</head>
	<body>
		<button id="go">
			gogogo
		</button>
	</body>
</html>

上面是html代码。

看http://localhost/c.txt的返回:

success_jsonpCallback({"name":"zoer"})

上面这一行的返回数据。其中(之前的是回调函数的名字。后面的内容是返回数据。

用浏览器打开html,点击gogogo,就能alert出来zoer这个名字。

---------------------------------------------------------------------------------------------------

这里使用了jq的jsonp功能。看介绍:

如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。

---------------------------------------------------------------------------------------------------

好处:

能跨域取得数据。

坏处:

返回值的前面必须是回调函数的名字。所以远程函数必须能够提供这样的内容。


抱歉!评论已关闭.