为什么JsonP不起作用?

时间:2012-10-10 22:37:51

标签: javascript jquery jsonp angularjs

  

可能重复:
  json Uncaught SyntaxError: Unexpected token :

jsonp 是否依赖于服务器支持,以便返回正确的响应?

我收到了这个请求,我得到的是js错误。

$.getJSON('myURL?q=keyword&callback=?', function(data){console.log(data)});

甚至角度jsonp方法都不起作用:

http://jsfiddle.net/neoswf/tckGG/5/

console>> js错误Uncaught SyntaxError: Unexpected token :

jsonp是否依赖于某些服务器实现?

解决!!!

这个问题与其他问题不同,因为没有其他答案谈论代理解决方案。

3 个答案:

答案 0 :(得分:3)

服务器不返回JSONP,它返回JSON。 JSONP结果是函数调用中包含的JSON结果。

示例:

callback873659823745({"destino":"http://...", ... })

如果无法使服务器返回JSONP,则需要一个请求服务的代理服务器,并返回包装为JSONP结果的JSON结果。

碰巧的是,我刚刚在jsonp.guffa.com设置了这样一个代理,如果你没有能力自己设置代理,你可以使用它。

演示:http://jsfiddle.net/Guffa/tckGG/6/

答案 1 :(得分:2)

是的,jsonp需要服务器支持。服务器需要将json包装在json * P *的“填充”部分中,这是客户端在响应数据周围定义和执行的方法。

答案 2 :(得分:2)

因为您的Url没有返回JSONP。它正在返回JSON。

{"destino":"http://www.buscape.com.br","palavras":["tv lcd 32","tv led","tv led 32","tv led 40","tv","tv led 42","tv lcd","tv lcd 42","tv lcd 26","tv 3d","tv lcd 40","tv 32","tv led 46","tv 42","tv lcd 22","tv led 32 full hd"]}

如果是JSONP的示例,请检查flickr的返回值。它返回

callbackToExecute({... JSON Object ...})