jsonp对返回的json格式报错"Uncaught SyntaxError: Unexpected token :"

酷酷的就 发布于 2014/01/24 12:37
阅读 121K+
收藏 1

用jsonp返回了一个json串后做页面填充,但是报错说json格式错误,不知道这个jsonp如何操作?

jQuery(document).ready(function(){ 
	var moviesServiceUrl="http://m.weather.com.cn/data/101010100.html";
	jQuery.ajax({
	  dataType: "jsonp",
	  url: moviesServiceUrl,
	  jsonp: "$callback",
	  success: showMovies
	});
});

function showMovies( data ) {
	console.info("asdfasdf");
	var json=JSON5.parse(data);
	var weather=json.weatherinfo ;
	var markup = "<li><b>${city_en}</b> (${date_y})</li>";
	jQuery.template( "tt1", markup );
	jQuery.tmpl( "tt1", weather ).appendTo( "#target2" );
}

console打印" Uncaught SyntaxError: Unexpected token :" 如图:

如果我把json弄到本地做解析是是正确的,json如下:

{
    "weatherinfo": {
        "city": "北京",
        "city_en": "beijing",
        "cityid": "101130101",
        "date": "",
        "date_y": "2014年1月23日",
        "wind6": "微风"
    }
}

本地解析方法如下:

var json=JSON5.parse(data);
if(json){
 var weather=json.weatherinfo ;
 var markup = "<li><b>${city_en}</b> (${date_y})</li>";
 jQuery.template( "tt1", markup );
 jQuery.tmpl( "tt1", weather ).appendTo( "#target2" ); 
}

上面那个错误真的不知道如何弄了,在线求大虾.

加载中
0
zplswf
zplswf
你处理的json语法有问题哈,把json返回的信息贴全哈,或者你把信息放在 http://tool.oschina.net/codeformat/json里面试下了
酷酷的就
酷酷的就
这个都没有打印呢,console.info("asdfasdf"); 还没到我处理呢, 已经报错说json格式有问题了,但我格式化是正常的没问题的.
0
oxsicn
oxsicn

跨域问题吧 jsonp 可以跨站 

json不能跨站

jsonp的格式稍微特殊点

0
leo108
leo108

jsonp的返回数据可不是json字符串

酷酷的就
酷酷的就
问题就是需要跨域获取一个json串,如何操作?
0
行水
行水

jsonp的返回数据格式应该是: 客户端传递的回调方法名称(json数据)吧?例如:
 myMethod(json数据); myMethod就是客户端指定的回调方法名称

酷酷的就
酷酷的就
不是js,那个地址返回的是json格式的,
行水
行水
回复 @zp-wmhx : 你可以在页面头部使用 js 引用啊 <script src="url"></script> url返回对应的js文件或对象
酷酷的就
酷酷的就
要跨域获取一个json,就上面那个网址的, 这个该如何操作呢?
0
酷酷的就
酷酷的就

[结贴]

貌似那个json格式不能解析或者说是不能通过js跨域获取再解析,算了吧,还是后台返回给页面做吧,

0
难道你还记得我吗
难道你还记得我吗
这跟前端代码没关系,用jsonp跨域请求的话,服务器端返回 json格式是callback({...});
难道你还记得我吗
难道你还记得我吗
如果是正确的jsonp请求返回的json格式(方法名+json数据),那就直接解析呗
酷酷的就
酷酷的就
回复 @难道你还记得我吗 : 服务器返回就是json串,怎么办?
难道你还记得我吗
难道你还记得我吗
像你贴出来的代码,服务器应该返回$callback({"",...});这种形式,客户端才能解析
0
木喜木喜
木喜木喜
LZ 最后怎么解决的呀??
木喜木喜
木喜木喜
回复 @zp-wmhx : 这个确实是缺陷,不过我最近做的一个项目是把widget打包在android的webview上,这样浏览器的权限(设置webview和js互动的相关属性)就完全由我操控,所以才本地用这样的方法
酷酷的就
酷酷的就
回复 @木喜木喜 : 那这个仅仅是自己做测试行,想后台挂机跑就不行了呀 .
木喜木喜
木喜木喜
回复 @zp-wmhx : http://blog.csdn.net/muxidreamtohit/article/details/41963383
酷酷的就
酷酷的就
回复 @木喜木喜 : disable 什么 ?
木喜木喜
木喜木喜
回复 @木喜木喜 : 话说,用disable之后就直接暴力get了
下一页
0
木喜木喜
木喜木喜

引用来自“木喜木喜”的评论

LZ 最后怎么解决的呀??
你是说改服务端?但是服务端不是自己控制的怎么破? 我是这么理解你得意思,不知道正确否?难道只能用后台?我现在在chrome下调试,所以先用--disable web security先用着,但以后长久也不是事
0
金豆子zzz

请问楼主这个问题解决了吗,后台代码改写返回数据的格式没?

0
LonnyDong
LonnyDong

这是因为返回的已经是Json对象了。直接用就可以了

返回顶部
顶部