目的是让jQuery为我自动生成一个回调函数的名称,并将我注册的匿名回调函数映射到这个“自动生成的回调函数名称”上;
有点绕,我们来看看服务端返回的它收到的请求地址就明白了:
getJSON ok!/test.php?callback=jQuery1102031468501139651384_1467262280037&_=1467262280038
看到callback后面跟了参数值了吧,这就是jQuery自动生成的;再看服务端代码;
服务端
<?php echo "var reqUrl = \"" . $_SERVER["REQUEST_URI"] . "\";"; echo $_GET["callback"] . "({\"reqUrl\": reqUrl });";
通过 $_GET["callback"] 获取客户端传递过来的回调函数名称;看输出:
var reqUrl = "/test.php?callback=jQuery1102019717387174726153_1467262461959&_=1467262461960"; jQuery1102019717387174726153_1467262461959({"reqUrl": reqUrl });
跨域交互三:jQuery.ajax
调用端:
<script type="text/javascript"> //注册页面加载完成回调函数(匿名) $(document).ready(function(){ //使用ajax方法调用跨域脚本; $.ajax({ url:"http://localhost/test.php", dataType: 'jsonp', success: function(data){ $(document.body).append("<hr />ajax ok!" + data.reqUrl); } }); }); </script>
注意:在请求的地址中不需要添加“?callback=?”,但我们使用“dataType: 'jsonp',”;
服务端
这个例子的服务端和上个是完全一样的!
使用总结
使用 getScript 的方式,你可以自己定义一个回调函数的名称,让服务端响应的时候使用你指定的回调函数名称;
使用 getJSON 的方式关键在于URL后面添加的“callback=?”;
使用 ajax 的方式关键在于参数中的数据类型设置“dataType: 'jsonp',”;
以上所述是小编给大家介绍的JS跨域交互(jQuery+php)之jsonp使用心得,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: