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

来源:互联网 发布:淘宝申诉在哪里 编辑:程序博客网 时间:2024/06/06 08:36

推荐的是目前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