<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Jsonp跨域请求</title> <script type="text/javascript" src=jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ $.ajax({ type: "get", async: false, url: "http://www.abc.com/test.php?code=K675", dataType: "jsonp",//数据类型 jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"getTrainInfo",//自定义的jsonp回调函数,默认为jQuery自动生成的随机函数名也可以写"?",jQuery会自动为你处理数据 success: function(json){ alert('您查询到火车班次信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。'); }, error: function(){ alert('fail');
} }); }); </script> </head> <body> </body> </html>
注意: jquery在处理jsonp类型的ajax时,自动帮你生成回调函数并把数据取出来供success属性方法来调用,所以不用再去写函数getTrainInfo()了。
ajax和jsonp其实本质上是不同的东西。ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本,所以只是因为jquery把jsonp封装进了ajax,人们才误认为jsonp是ajax的一种。