$re = '/style=(?|"([^"]+)"|\'([^\']+)\')/';
这是我调用以获取JSON数据的网址:
这是包含数据的网址:
use two groups and replace with $1$2
我收到错误 - 没有定义noCB。
我想我试图以错误的方式访问JSON对象 - 但我不确定正确的方法。请让我知道 - 我是初学者。
答案 0 :(得分:3)
您获得的响应是使用JSONP(而不是JSON)。您只需使用data.noCB.response.docs
,而不是data.response.docs
。 noCB
不是对象的一部分,它是一个函数调用(这就是JSONP的工作原理)。
您还希望从URL中删除callback=noCB
,以便jQuery为您处理JSONP管道。
您还有其他几个问题:
您在填写之前尝试使用output
。有关详细信息,请参阅How do I return the response from an asynchronous call?。
不要使用for-in
循环遍历数组,除非您建议使用安全措施;有关详细信息,请参阅For-each over an array in JavaScript?。
最后,不是问题本身,但只要您使用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>