jQuery(document).ready(function(){ $.ajax({ type: "get", async: false, url: "url", dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function(json){ console.log("123"); }, error: function(){ console.log("456"); } }); });
jsonp Uncaught SyntaxError: Unexpected token : 报错
-----------------------------------------------------------------------------------------------
翻看了一下Jquery文档发现jsonp:”callback”, jsonpCallback:”success_jsonpCallback”,传递这两个参数是有原因的,jsonp的返回数据格式应该是: “客户端传递的回调方法名称(json数据)”,将php文件改为:
<?php $arr = array ('username'=>'jack','age'=>21,'gender'=>'male'); echo $_GET['callback']."(".json_encode($arr).")"; ?>
测试,正确返回结果,如下图:
可以看到,php文件返回的结果是 success_jsonpCallback({“username”:”jack”,”age”:21,”gender”:”male”}) ,这才是正确的jsonp返回格式,而success_jsonpCallback这是传递过去的参数。
http://www.cnphp6.com/archives/65409