更新1:
如果我打字,这就是我在浏览器中得到的内容
http://www.remote_host.com/feed.php?callback=jsonpCallBack
{ "RSS": { "channels": [ { "title": "title goes here","link": "http://www.remote_server.com/Feed.PHP","description": "description goes here","items": [ { "title": "item title goes here","link": "item link goes here","pubDate": "item date goes here","description": "item description goes here" },{ "title": "item title goes here","description": "item description goes here" } ] } ] } }
那么这不是jsonp吗?
原始问题:
我有以下脚本,我试图从远程主机获取json数据:
$(document).ready(function() { get_json_Feed(); function get_json_Feed() { $.ajax({ url: 'http://www.remote_host.com/Feed.PHP?type=json',type: 'GET',dataType: 'jsonp',error: function(xhr,status,error) { alert("error"); },success: function(json) { alert("success"); } }); } });
但由于某种原因,我收到错误并警告:
Warning: Resource interpreted as
Script but transferred with MIME type
text/html.Error: Uncaught SyntaxError:
Unexpected token :
我究竟做错了什么?
解决方法
JSONP“协议”依赖于站点使用表单的JavaScript语句回复您的请求,
someFunction( someJSON )
函数的名称是作为代码提供的一个参数提供的,其理念是响应脚本一旦被浏览器使用和解释,将导致使用已解析的JSON blob调用该函数 – 也就是说,一个JavaScript对象. jQuery库将为您完成一些bookeeping工作,甚至可以创建要调用的全局范围函数(这将是仅调用您提供的回调作为“success”参数的代码).
因此,您应该检查该服务器的实际响应是什么样的.听起来好像它可能不是准备以这种方式响应的服务器.您可能需要确保URL上有一个额外的参数,形式为“callback =?”.