2016-02-08 2 views
-1

Я знаю, что это похоже на много, но мой вопрос относится к одной строке (полужирный) код. Я знаю, что мой обработчик событий настроен правильно. Я знаю, что мой 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 
    } 
    } 
} 

    }); 
}()) 
+0

Почему начать URL с этим 'https: \/\ /'? Разве это не должно быть 'https: //'? –

+0

Вы столкнулись с [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

+0

Спасибо 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', следовательно, не допускается. –

ответ

0

У вас уже есть строка запроса началась в URL с помощью ?, но добавление другого ? когда вы делаете:

url = url + searchTerm + "?callback=?"; 

Изменения в

url = url + searchTerm + "&callback=?"; 

отлично работает, когда я послал термин «пищевые продукты»

DEMO

+0

СПАСИБО СМОТРЕТЬ МУХХHHHHH !!!!!!! Застрял весь день, потому что каждый проект, который у меня есть на моей пластине, теперь включает в себя получение JSONP –

+0

одного предложения .... использовать объекты для аргумента 'data', а jQuery построит для вас строку запроса. Намного проще добавлять/удалять и не суетиться над '&' и '?' – charlietfl

+0

Можете ли вы рассказать подробнее? Я не знаю, что вы имеете в виду, используя объекты для аргумента данных. –

Смежные вопросы