ajax跨域请求 jsonp 出现Uncaught SyntaxError: Unexpected token

2024-12-27 08:57:03
推荐回答(3个)
回答1:

Jquery文档中描述,jsonp:”callback”, jsonpCallback:”success_jsonpCallback”,传递这两个参数是有原因的,jsonp的返回数据格式应该是: “客户端传递的回调方法名称(json数据)”。

比如将这段代码

$arr = array ('username'=>'jack','age'=>21,'gender'=>'male'); 

echo json_encode($arr);

?>

改为

$arr = array ('username'=>'jack','age'=>21,'gender'=>'male'); 

echo $_GET['callback']."(".json_encode($arr).")";

?>

找到两段代码的区别就知道怎么解决啦。

ajax跨域失败,是因为js遵循同源规则,即不同域名下的js访问是不被允许的(安全考虑),那么如何解决,主要有三个方法:

第一个是修改服务器,ajax返回数据,也就是dataType类型设置为jsonp,jsonp是专门为解决跨域问题而生的,具体用法自行百度。

第二个方法,就是先用自己服务器后台执行curl,抓取目标服务器上的文件,在用前端ajax获取服务器后台获取到的目标服务器文件结果即可。

回答2:

Jquery文档中描述,jsonp:”callback”, jsonpCallback:”success_jsonpCallback”,传递这两个参数是有原因的,jsonp的返回数据格式应该是: “客户端传递的回调方法名称(json数据)”

比如将这段代码

$arr = array ('username'=>'jack','age'=>21,'gender'=>'male');
echo json_encode($arr);
?>

改为

$arr = array ('username'=>'jack','age'=>21,'gender'=>'male');
echo $_GET['callback']."(".json_encode($arr).")";
?>

找到两段代码的区别就知道怎么解决啦。

回答3:

楼主解决了没有,我也是同样的问题