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

$.ajax({type:'GET',url:netGet,async:false,dataType:'JSONP',});报错:UncaughtSyntaxError:... $.ajax({

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 :

有什么办法可以正确获取数据!!
展开
 我来答
xiangsi1016
高粉答主

2018-04-12 · 说的都是干货,快来关注
知道大有可为答主
回答量:157
采纳率:100%
帮助的人:2.4万
展开全部

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获取服务器后台获取到的目标服务器文件结果即可。

别紧张丶我傻
2016-07-22
知道答主
回答量:12
采纳率:0%
帮助的人:3.7万
展开全部
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).")";
?>

找到两段代码的区别就知道怎么解决啦。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
电影J辑
2015-12-17 · TA获得超过272个赞
知道答主
回答量:31
采纳率:100%
帮助的人:13万
展开全部
楼主解决了没有,我也是同样的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式