您的位置:首页 > Web前端 > JavaScript

技术点-Jsonp跨域请求-技术性总结

2017-08-01 10:36 211 查看
推荐的是目前jQuery $.ajax()支持get方式的跨域

<script type="text/javascript">
<!-- 页面初始化执行,$(function(){});-->
$(function(){
<!--测试是否进入该方法-->
alert("进入");
$.ajax({
type: "get",  //jsonp必须是get请求方式
async: false,  //同步还是异步,false代表同步
url: "http://localhost:8082/ActiveMQSpringDemo/activemq/dd",   //访问的服务器路径,跟之前一样的方式
data:{name:'hehe'},  //请求参数,跟之前一样的方式
dataType: "jsonp",   //指定jsonp请求方式,这样就不再是ajax请求方式了。
jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
success: function (json) {  //这里json就是服务器返回的响应数据。
alert(json.id+" "+json.name);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {   //如果抛出异常,进入该方法
//这两个代表响应的异常信息和异常对象内容。
alert(textStatus);
alert(errorThrown);
}
});
});
</script>


解释:

1,async: false,(默认是true);

如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死,

只有tet.php执行结束后,才可以执行其它操作。

2,async: true ,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.php还未执行完,就可能已经执行了 ajax请求后面的操作,

如: alert(temp+’ end’);然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。

引荐一位大牛博客,以上的部分思路和源码都是在其基础上进行的修改,很感谢!

http://blog.csdn.net/sylarmp/article/details/35602571
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  技术