我知道它看起来很多,但我的问题涉及一行(粗体)代码。我知道我的事件处理程序设置正确。我知道我的网址应该是什么,除了?callback =?部分(我在另一篇文章中读到,通过将其放在传递给$ .getJSON的url的末尾,getJSON变得能够使用JSONP,并且根据他们的API页面wiki使用JSONP)。我也确定domMod功能永远不会运行,而不是第一线。所以不要担心我的代码的其他部分,如果你能告诉我为什么我的$ .getJSON没有调用函数,我就是新手。我收到的错误消息是
wikiViewer.html:1拒绝执行脚本 '?https://en.wikipedia.org/w/api.php?format=json&action=query&generator=searc ... =约旦回调= jQuery111107644474213011563_1454965359373&安培; _ = 1454965359374' 因为它的MIME类型('application / json')不可执行,而且 启用了严格的MIME类型检查。
(function(){
var searchBtn = document.getElementById('search');
//var body = document.getElementsByTagName('body')[0];
var input = document.getElementById("input");
var bodyDiv = document.getElementById('bodyDiv')
$(document).ready(function(){
searchBtn.addEventListener('click', searchWiki);
function searchWiki(){
bodyDiv.innerHTML = "";
var url = 'https:\/\/en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch='
if (input.value === ""){
return;
}
var searchTerm = input.value.replace(/\s/g, '%20');
url = url + searchTerm + "?callback=?";
**$.getJSON(url, domMod)** //change fileName to be whatever we wish to search
function domMod(json){ //what to do with dom based on json file NOTE WE NEED TO FIRST CHECK ANDREMOVE PREVIOUS SEARCH CONTENT
var entry;
if (!json.hasOwnProperty(query)){
return;
}
if (!json.query.hasOwnProperty(pages)){
return;
}
json = json.query.pages;
var keys = Object.keys(json);
var keysLength = keys.length;
for (var i = 0; i < keysLength; i++){
entry = json[keys[i]];
var outterDiv = document.createElement('div');
outterDiv.className = "entry";
var imageDiv = document.createElement('div');
imageDiv.className = "entryImg";
var entryDiv = document.createElement('div');
entryDiv.className = "entryTxt";
outterDiv.appendChild(imageDiv);
outterDiv.appendChild(entryDiv);
entryDiv.innerHTML = '<h2>' + entry.title + '</h2>' + '<p>' + entry.extract + '</p>'
if (entry.hasOwnProperty('thumbnail')){ //add image to our imageDiv child of entryDiv
imageDiv.style.backgroundImage = "url('" + entry.thumbnail.source + "')"
}
bodyDiv.appendChild(outterDiv); //appendChild to the Body
}
}
}
});
}())
答案 0 :(得分:0)
您已使用?
在网址中启动了查询字符串,但在执行此操作时添加了另一个?
:
url = url + searchTerm + "?callback=?";
更改为
url = url + searchTerm + "&callback=?";
当我发送术语“食物”时工作正常
的 DEMO 强>