jquery jsonp success不执行,error提示parserror


$.ajax({
type: "get",
async: false,
url: "https://"+row[0]+"/classes/action/middle.php",
data: {getdn:true},
dataType: "jsonp",
jsonp: "callback",
jsonpCallback:'?',
complete: function (XMLHttpRequest, textStatus){
var data = XMLHttpRequest.responseText;
alert("data:"+data);
alert('error: ' + textStatus);
},
success: function(data){
var json = $.parseJSON(data);
alert("json:"+json);
alert("data:"+data);
},
error:function(XHR, textStatus, errorThrown){
alert('error: ' + errorThrown);
}
});//end ajax

浏览器信息:
1、参数:
_ 1394088275929
callback ?
getdn true
2、地址:
https://192.168.8.100/classes/action/middle.php?callback=?&getdn=true&_=1394088275929
3、响应:
?["1 secmail.com.cn"] (success获取不到这里的值)
4、页面提示:
ERROR:parserror
...全文
3835 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
$(function(){ //https://api.vdian.com/token?grant_type=client_credential&appkey=622986&secret=211066bdbef063c4cef43df32590c3b3 $.ajax({ url: "https://api.vdian.com/token", data:{"grant_type":"client_credential","appkey":"622986","secret":"211066bdbef063c4cef43df32590c3b3"}, type : "get", async:false, dataType : "jsonp", jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) //jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 complete:function(XMLHttpRequest,textStatus){ var data=XMLHttpRequest.responseText; alert("data:"+data); alert("error:"+textStatus); }, success:function(json){ alert(1); }, error:function(XHR, textStatus, errorThrown){ alert('error: ' + errorThrown); } }); }); 我也遇到了这个问题,请问怎么解决
  • 打赏
  • 举报
回复
朋友,我遇见跟你类似的问题了,请教你最后是怎么解决的这个问题。
$.ajax({
        type: 'GET',
        async: false,
        url: 'http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp?callback=?',
        data:{theIpAddress:host_ip[0]},
        dataType: 'jsonp',
        jsonp: "callback",

        success: function(msg){
            alert(JSON.stringify(msg));
        },
        error:function(XMLHttpRequest, textStatus, errorThrown){
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(XMLHttpRequest.responseText);
            alert(textStatus);
            alert(errorThrown);
            console.log(textStatus);
        }
    });
couterzzz 2015-03-08
  • 打赏
  • 举报
回复
你要自己定制jsonpCallback,请确保传入一个合法的函数名哦,采用问号是不行的,你也无法自定义一个问号的函数, 具体说明参见http://bugs.jquery.com/ticket/12707。 jquery处理jsonp采用的是script标签实现,跟一般的ajax是不一样的;jquery为了获取到响应数据,内部会重写jsonpCallback函数,在script执行成功后,会将数据赋值给一个引用,然后再将该引用作为参数调用jsonpCallback(你自己定义的),最后会对返回数据做一次判断,若为空(这里如果你提供的回调函数名是非法的,jquery就调用不到,那么就会为空),会直接报parserror。
  • 打赏
  • 举报
回复

将jsonpCallback:'?',行注释掉,jsonp会随机生成函数名
  • 打赏
  • 举报
回复
#5的方法实现了,谢谢。 总结:

$.ajax({  
			 type: "get",  
			 async: false,  
			 url: "https://"+row[0]+"/classes/action/middle.php",  
			 data: {getdn:true},
			 dataType: "jsonp",  
			 jsonp: "callback",
			 jsonpCallback:'?',   //这里为后台返回的动态函数
			 success: function(data){
				 //alert("data:"+data[0].did); (success)
				 showDomainList(data); //处理返回结果
			 },  
			 error:function(XHR, textStatus, errorThrown){
			     return false;
		     }
		 });//end ajax

#返回值作为jsonp回调函数的参数
if(!empty($_GET['getdn'])){
	$jsonp = $_GET['callback'];  //获取jsonp回调函数的函数名,即url中callback=后面的值
	$domains = $mysql->getDomains();
	if(empty($domains)){
		echo false;
	}else{
		$dn = json_encode($domains);
	}
	echo $jsonp.'('.$dn.')'; //这里要返回jsonp的 回调函数名(参数)
}//end if
x372563572 2014-03-06
  • 打赏
  • 举报
回复
貌似不传callback 后台响应: callback(你的值);就好了吧
x372563572 2014-03-06
  • 打赏
  • 举报
回复
2、地址: https://192.168.8.100/classes/action/middle.php?callback=callbackFn?&getdn=true&_=1394088275929 3、响应: ?["1 secmail.com.cn"] (success获取不到这里的值) 后台响应 callbackFn(你的值)
  • 打赏
  • 举报
回复
OH! MY GAD! 回复#1:jquery jsonp确实是跨域请求。 回复#2:我贴出的响应就是后台要返回的数据,但是jquery获取不到。
引用 2 楼 yyl8781697 的回复:
如果你是用jsonp的话 success里面得到的本身就是json格式了 就不需要再转格式了
前提是success能收到返回值,才能进行格式转不转换的问题,现在是success不执行。 重点解决:Error:parserror问题。 等待大神...
yyl8781697 2014-03-06
  • 打赏
  • 举报
回复
把你返回的数据data贴出来看看 如果你是用jsonp的话 success里面得到的本身就是json格式了 就不需要再转格式了
嘻哈大咖秀 2014-03-06
  • 打赏
  • 举报
回复
jsonp跨域请求?

87,920

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧