问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ajax跨域请求jsonp出现Uncaught SyntaxError,该如何解决?

发布网友 发布时间:2022-04-27 13:24

我来回答

2个回答

热心网友 时间:2022-04-06 07:10

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

热心网友 时间:2022-04-06 08:28

<!DOCTYPE html><html><head>  <meta charset="utf-8" />  <title>JSONP跨域请求</title>  <script src="http://www.oschina.net/js/2012/jquery-1.7.1.min.js" type="text/javascript"></script>  <script type="text/javascript">
$(function(){
$(".button").on("click",function(){
$.ajax({
type:"get",
url:"http://www.abc.com/json.php",
dataType:"jsonp",
jsonp:"callback",
jsonpCallback:"success_jsonpCallback",
success:function(json){
$(".user").html("用户信息:"+json.username+","+json.age+","+json.gender);
},
error:function(){
alert("请求出错!");
}
});
});
});  </script></head><body>  <button class="button">点击获取数据</button>
<div class="user"></div></body></html>

http://www.abc.com/json.php文件代码为:

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

在Chrome浏览器调试会发现报错了,如图:

<?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这是传递过去的参数 。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ipad输入键盘变小了 金黄色的鱼肉 这是鲶鱼吗?为啥有八根胡子。能吃不?味道咋样。。。 可塑橡皮有毒害吗可塑橡皮有没有毒害 小米手机应用锁密码忘了怎么解除还不想恢复出厂模式 欢乐斗地主得到的包箱里开的那个宝宝去那里领 混凝土外加剂的使用方法 混凝土外加剂使用注意事项 为什么观众喜欢在直播间买东西? 梦见别人开口向我借钱 更换发动机发动机号会变吗 如何使用jsonp解决跨域问题 jsonp跨域请求怎么设 jquery php ajax jsonp 跨域的问题 如何实现跨域?jsonp实现原理 jsonp跨域是通过js实现的吗 javascript开发中jsonp跨域请求是什么意思?什么叫跨域?为什么用jsonp... 用ajax怎么解决跨域的问题? 使用jquery的ajax的jsonp类型跨域请求数据、始终获取不到返回数据呢_百... 原生js实现ajax封装好怎么使用 ajax怎么实现跨域 Ajax为什么能解决跨域 薏米炒后还能去湿气吗 听说薏米可以去湿气,那是要炒还是直接去超市买来泡热水喝? 薏米除湿需要炒吗′ 薏米除湿气需要炒熟吗 湿气重薏米需要炒熟吗 薏米祛湿用炒吗 weverse shop怎么退款 婚内出轨怎样判刑 婚内出轨有什么处罚 想了解jsonp,怎么学习啊 什么是js的同源策略,jsonp跨域请求什么意思 JSONP怎样实现跨域 如何快速的练成六块腹肌? 怎样才能锻炼出六块腹肌? 六块腹肌怎么练 怎么练六块腹肌 六块腹肌怎么练成 离婚后发现对方婚内出轨怎么办? 离婚后发现对方婚内出轨,可以起诉吗 离婚后知道对方婚内出轨怎么办 离婚后,发现婚姻有效期内,男方有外遇,可以起诉吗? 离婚三年后发现对方婚内出轨,是否可以重新起诉并且要求分割财产 离婚后才知道对方婚内出轨,并且有了小孩,是否还可以起诉? 协议离婚后发现出轨能改协议内容和要求对方付抚养费么 协议离婚后,才发现男方有了小三,还能再起诉离婚吗? 离婚后才发现对方有婚内出轨行为,还可以提起上诉吗? 您好,离婚三年后发现对方婚内出轨,是否可以重新起诉并且要求分割财产 协议离婚之后,离婚证也领了,发现婚内出轨,婚内财产有异议咋办 离婚后才发现对方婚内出轨的还能要求赔偿吗