如何访问此JSON对象 - 未定义错误

时间:2017-01-01 14:55:14

标签: jquery json

$re = '/style=(?|"([^"]+)"|\'([^\']+)\')/';

这是我调用以获取JSON数据的网址:

这是包含数据的网址:

use two groups and replace with $1$2

我收到错误 - 没有定义noCB。

我想我试图以错误的方式访问JSON对象 - 但我不确定正确的方法。请让我知道 - 我是初学者。

1 个答案:

答案 0 :(得分:3)

您获得的响应是​​使用JSONP(而不是JSON)。您只需使用data.noCB.response.docs,而不是data.response.docsnoCB不是对象的一部分,它是一个函数调用(这就是JSONP的工作原理)。

您还希望从URL中删除callback=noCB,以便jQuery为您处理JSONP管道。

您还有其他几个问题:

  1. 您在填写之前尝试使用output。有关详细信息,请参阅How do I return the response from an asynchronous call?

  2. 不要使用for-in循环遍历数组,除非您建议使用安全措施;有关详细信息,请参阅For-each over an array in JavaScript?

  3. 最后,不是问题本身,但只要您使用jQuery,您也可以将它用于document.getElementById("listt").innerHTML = output;之类的内容(例如:$("#listt").html(output); )。

    示例:

    $(document).ready(function() {
      var output = "<div>";
      $.getJSON('https://search-a.akamaihd.net/typeahead/suggest/?solrformat=true&rows=20&q=*%3A*+AND+schoolid_s%3A1255&defType=edismax&qf=teacherfirstname_t%5E2000+teacherlastname_t%5E2000+teacherfullname_t%5E2000+autosuggest&bf=pow(total_number_of_ratings_i%2C2.1)&sort=total_number_of_ratings_i+desc&siteName=rmp&rows=20&start=0&fl=pk_id+teacherfirstname_t+teacherlastname_t+total_number_of_ratings_i+averageratingscore_rf+schoolid_s&fq=&prefix=schoolname_t%3A%22University+of+Texas+at+Austin%22&callback=?', function(data) {
        data.response.docs.forEach(function(doc) {
          output += "a";
        });
        output += "</div>";
        document.getElementById("listt").innerHTML = output;
      });
    });
    <div id="listt"></div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>