检查对json请求的响应内容?

问题描述:

我试图根据FreeCodeCamp挑战构建一个随机引用生成器,但我想先写一个测试来确认我实际上获取了我请求的json对象。我有一个设置为“报价” ID的简单h1元素和下面的代码(jQuery是在CodePen装起来)检查对json请求的响应内容?

function genQuote() { 
    var output = $.getJSON("http://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&callback=", function(data){ 
    var theQuote = data.content; 
    var Author = data.title; 

    document.getElementById('quote').innerHTML = theQuote; 
    }); 
} 

问题,访问时的URL,显示了明明看起来像一个JSON对象,对我来说,但我的功能根本不会改变#quote项目。

+0

查找CORS - 检查您的浏览器开发人员工具控制台 –

从URL中删除&callback=,以请求JSON,而不是将$.getJSON()调用转换为jsonp请求。此外,返回一个数组,而不是一个普通的对象;访问使用对象括号标记

function genQuote() { 
    var output = $.getJSON("https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1", function(data){ 

    var theQuote = data[0].content; 
    var Author = data[0].title; 

    document.getElementById('quote').innerHTML = theQuote; 
    }) 
} 

$(genQuote); 

的jsfiddle https://jsfiddle.net/gpyx6jLy/

至于你的问题评论说,这是一个跨源请求共享(CORS)的问题。该API返回“http://null”作为Access-Control-Allow-Origin标头,该标头不允许访问。

看起来像这是他们的API服务器中的错误,您可能无法使用它。

+0

问题是'javascript'在Question处发出'jsonp'请求,而不是'JSON'的请求。 stacksnippets具有“null”原点,而不是作为参数传递给'$ .getJSON()'的URL。请求来源和URL的协议也应该匹配。 – guest271314