Guardian API搜索Javascript JSONP

时间:2013-11-26 16:50:06

标签: javascript html api jsonp

我有一个html页面,我可以在主题中输入搜索到名为“search”的文本框,并且有一个名为“searchbutton”的提交按钮。我试图搜索监护人API,然后将结果加载到“内容”div中的html页面,但是,我不知道我哪里出错了,并希望得到一些帮助。因为我使用的是公共版本,所以我不需要API密钥。谢谢,

var baseURL = "http://content.guardianapis.com/search";
var searchQuery;

function init() {
  var search = document.getElementById("search");
  var searchButton = document.getElementById("searchbutton");
  searchButton.onclick = getSearchValue;
}

function getSearchValue () {
   var search = document.getElementById("search");
   var searchResult = search.value;
   searchQuery = searchResult.replace(" ", "+");
   loadSearch();
}

function loadSearch() {
    makeJSONPCall(searchQuery, "loadSearchCallBack");
}  


function makeJSONPCall(queryPart, callback) {
    var url = baseURL + "?q=";
    url = url + queryPart;
    url = url + "&callback=" + callback;
    var scriptElement = document.createElement("script");
    scriptElement.id = "jsonp";
    scriptElement.src = url;
    document.head.appendChild(scriptElement);
}

function loadSearchCallBack(data){
   cleanupScript();
   listResults(data);
}

function listResults(data) {
   for ( var i=0; i< data.response.results.length; i++) {
      var list = data.response[i];
      renderResults(i, data.response[i]);
   }
}

function renderResults(i, list) {
var resultDiv = document.getElementById("content");
resultDiv.innerHTML = list.results[i].webTitle;

}

function cleanupScript() {
var scriptElement = document.getElementById("jsonp");
scriptElement.parentNode.removeChild(scriptElement);
}


window.onload = init;

1 个答案:

答案 0 :(得分:0)

我结束了jsfiddle,包括一些变化。

JavaScript的:

var baseURL = "http://content.guardianapis.com/search";
var searchQuery;
function init() {
    var search = document.getElementById("search");
    var searchButton = document.getElementById("searchbutton");
    searchButton.onclick = getSearchValue;
}
function getSearchValue() {
    var search = document.getElementById("search");
    var searchResult = search.value;
    searchQuery = searchResult.replace(" ", "+");
    loadSearch();
}
function loadSearch() {
    makeJSONPCall(searchQuery, "loadSearchCallBack");
}
function makeJSONPCall(queryPart, callback) {
    var url = baseURL + "?q=";
    url = url + queryPart;
    url = url + "&callback=" + callback;
    var scriptElement = document.createElement("script");
    scriptElement.id = "jsonp";
    scriptElement.src = url;
    document.head.appendChild(scriptElement);
}
function loadSearchCallBack(data) {
    listResults(data);
    cleanupScript();
}
function listResults(data) {
    for (var i = 0; i < data.response.results.length; i++) {
        var list = renderResults(data.response.results[i]);
    }
}
function renderResults(result) {
    var resultDiv = document.getElementById("content");
    resultDiv.innerHTML += result.webTitle;
}

function cleanupScript() {
    var scriptElement = document.getElementById("jsonp");
    scriptElement.parentNode.removeChild(scriptElement);
}
init();

Html:

<input id="search" type="search" />
<button id="searchbutton">Search</button>
<div id="content"></div>