Я знаю, что это похоже на много, но мой вопрос относится к одной строке (полужирный) код. Я знаю, что мой обработчик событий настроен правильно. Я знаю, что мой url - это то, что должно быть к этому моменту, кроме «callback =?»? part (я прочитал в другом сообщении, что, поставив это в конце URL-адреса, переданного в $ .getJSON, getJSON становится способным работать с JSONP, и согласно их вики-странице API использует JSONP). Я также точно знаю, что функция domMod НИКОГДА НЕ РАБОТАЕТ, НЕ ДАЖЕ ПЕРВОЙ ЛИНИИ ЭТОГО. Поэтому не беспокойтесь о других частях моего кода, просто пожалуйста, если вы скажете мне, почему мой $ .getJSON не вызывает функцию, я действительно новичок в этом. Сообщение об ошибке я получаю обратно
wikiViewer.html: '? https://en.wikipedia.org/w/api.php?format=json&action=query&generator=searc ... = Иордана обратного вызова = jQuery111107644474213011563_1454965359373 & _ = 1454965359374' 1 Отказался выполнить скрипт из , потому что его MIME тип ('применение/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
}
}
}
});
}())
Почему начать URL с этим 'https: \/\ /'? Разве это не должно быть 'https: //'? –
Вы столкнулись с [CORS] (http://stackoverflow.com/questions/21854516/understanding-ajax-cors-and-security-considerations). См. [Здесь] (https://www.mediawiki.org/wiki/Manual:$wgCrossSiteAJAXdomains), особенно [это] (https://gerrit.wikimedia.org/r/#/c/9624/). Вы, вероятно, прекрасно, если вы удалите «+»? Callback =? "'. – Kenney
Спасибо Fredrik Я действительно избавился от обратной косой черты. И Kenney после удаления, что я получаю XMLHttpRequest, не может загрузить https://en.wikipedia.org/w/api.php?format=json&action=query&generator=searc...mit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=ray%20rice. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение 'http: // localhost: 8080', следовательно, не допускается. –