ajax跨域请求 jsonp 出现Uncaught SyntaxError: Unexpected token 5
type : 'GET',
url : netGet,
async : false,
dataType : 'JSONP',
});
报错 : Uncaught SyntaxError: Unexpected token :
如果将 dataType : 'JSONP' 修改成 dataType : 'JSON
报错 : No 'Access-Control-Allow-Origin' header is present on the requested '
数据已经传过来了!就是报 Uncaught SyntaxError: Unexpected token :
有什么办法可以正确获取数据!! 展开
Jquery文档中描述,jsonp:”callback”, jsonpCallback:”success_jsonpCallback”,传递这两个参数是有原因的,jsonp的返回数据格式应该是: “客户端传递的回调方法名称(json数据)”。
比如将这段代码
<?php
$arr = array ('username'=>'jack','age'=>21,'gender'=>'male');
echo json_encode($arr);
?>
改为
<?php
$arr = array ('username'=>'jack','age'=>21,'gender'=>'male');
echo $_GET['callback']."(".json_encode($arr).")";
?>
找到两段代码的区别就知道怎么解决啦。
ajax跨域失败,是因为js遵循同源规则,即不同域名下的js访问是不被允许的(安全考虑),那么如何解决,主要有三个方法:
第一个是修改服务器,ajax返回数据,也就是dataType类型设置为jsonp,jsonp是专门为解决跨域问题而生的,具体用法自行百度。
第二个方法,就是先用自己服务器后台执行curl,抓取目标服务器上的文件,在用前端ajax获取服务器后台获取到的目标服务器文件结果即可。
比如将这段代码
<?php
$arr = array ('username'=>'jack','age'=>21,'gender'=>'male');
echo json_encode($arr);
?>
改为
<?php
$arr = array ('username'=>'jack','age'=>21,'gender'=>'male');
echo $_GET['callback']."(".json_encode($arr).")";
?>
找到两段代码的区别就知道怎么解决啦。