Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.getJSON parsererror正在尝试调用API_Javascript_Json_Api_Getjson - Fatal编程技术网

Javascript $.getJSON parsererror正在尝试调用API

Javascript $.getJSON parsererror正在尝试调用API,javascript,json,api,getjson,Javascript,Json,Api,Getjson,我试图使用Clipped API()返回JSON,但遇到了一些麻烦。我正在使用getJSON,在Chrome的JS控制台中,我收到以下错误消息: 资源解释为脚本,但使用MIME类型text/html传输:“…emo-day-2013-still-looking-the-next-airbnb-or-dropbox/&& 未捕获的语法错误:意外的标识符 请求失败:parsererror,错误:未调用JQuery19108596961265942454_1364420105378 这是我的JS: v

我试图使用Clipped API()返回JSON,但遇到了一些麻烦。我正在使用getJSON,在Chrome的JS控制台中,我收到以下错误消息:

资源解释为脚本,但使用MIME类型text/html传输:“…emo-day-2013-still-looking-the-next-airbnb-or-dropbox/&&

未捕获的语法错误:意外的标识符

请求失败:parsererror,错误:未调用JQuery19108596961265942454_1364420105378

这是我的JS:

var clippedAPI = "http://clipped.me/algorithm/clippedapi.php?url=[URL]callback=?";
    $.getJSON(clippedAPI, "http://pandodaily.com/2013/03/26/y-combinator-demo-day-2013-still-looking-for-the-next-airbnb-or-dropbox/" ).done(function(json) {
            console.log("JSON Data: " + json.title );
    }).fail(function(jqxhr, textStatus, error){
            var err = textStatus + ', ' + error;
            console.log("Request Failed: " + err);
    });

这是我第一次尝试使用API或JSON制作一些东西,所以我真的不知道在这里该做什么。我试着用谷歌搜索,但什么也找不到。当我添加callback=?

时,我实际发送的数据会被jQuery通知切断。您的参数不会简单地“猜测”[URL]参数是什么。试试这个:

var clippedAPI = "http://clipped.me/algorithm/clippedapi.php";
$.ajax({
url: clippedAPI,
type: "GET",
dataType: "JSONP",
data: {
url: "http://pandodaily.com/2013/03/26/y-combinator-demo-day-2013-still-looking-for- the-next-airbnb-or-dropbox/"}
}).done(function(json) {
        console.log("JSON Data: " + json.title );
}).fail(function(jqxhr, textStatus, error){
        var err = textStatus + ', ' + error;
        console.log("Request Failed: " + err);
});
但是,即使这样也会失败,因为您的API端点似乎不理解/不支持JSONP,并且不提供
访问控制允许源代码
头。因此,您有两个选择:

  • 您可以在本地反向代理API,以绕过跨域问题,并使用标准JSON
  • 你可以…嗯。。。有更好的API吗?把票交给开发人员整理

跨域请求需要使用JSONP。我建议使用
$.ajax()
而不是像
$.getJSON
这样的快捷方式,因为这样可以更好地理解您要做的事情。Docs:@Jasper:
$。如果URL中有
回调
,则getJSON
会发出JSONP请求。如果您试图使用JSONP发出跨域请求,且端点不支持JSONP(或CORS),则您运气不佳。@FelixKling Hm,很高兴知道,我仍然建议不要使用快捷方式。但是,有时候你会从中学到一些东西:)。谢谢,我会尝试一下。本地托管的代理通常很容易实现。让你的JS调用本地托管的服务器端脚本,让该脚本进行API调用,并将API的响应返回给你的JS。谢谢,这就是我的想法。如果你使用apache,mod_proxy允许你反向代理它。如果您使用的是nginx,那么proxy\u pass就可以直接实现这一点,甚至更好!假设模块可用,这两种方法都非常容易实现。我已经设置了一个Apache服务器并将站点放在正确的位置,但是我完全不知道如何使用mod_proxy设置反向代理。我想我还需要阅读更多关于这个主题的内容……非常简单:使用
ProxyPass[source][dest]
来定义代理(可以使用htaccess来防止本地主机以外的任何人访问它)。使用
ProxyPassReverse
除了自动跟踪重定向和相应地重写标头中的URI之外。记住跨域限制:相同的域,相同的端口。