2016-08-14 4 views
0

Ich arbeite an einem 'Wikipedia Viewer' Projekt, wo Sie einen Suchbegriff eingeben und eine Liste von Wikipedia-Suchergebnissen sehen, aber es ist weit von komplett.Ich kann keine Daten von Wikipedia API

Bis jetzt habe ich gerade den Code geschrieben, um den ersten Suchbegriff anzuzeigen. Aber es funktioniert nicht.

Mein HTML:

<div class="container-fluid"> 
 

 
<div class="searchAndButtons"> 
 
    
 
<input type="text" id="search"> 
 
    <button class="btn" id="searchBut">Search</button> 
 
    <form action="https://en.wikipedia.org/wiki/Special:Random"><button class="btn">Random Wiki Article</button> 
 
    </form> 
 
    </div> 
 
    <div class="searchResults"> 
 
    </div> 
 
    
 
    
 
    </div>

Meine CSS:

.container-fluid{ 
 
    padding:5%; 
 
} 
 
.searchAndButtons{ 
 
    text-align:center; 
 
}

Mein Javascript:

$(document).ready(function(){ 
 
    $("#searchBut").on("click",function(){//this is click handler 
 
    var searchTerm=document.getElementById("#search").value; 
 
    searchTerm=searchTerm.replace(/\s/g,"+"); 
 
    
 
    $.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles="+searchTerm+"&rvprop=content&format=json&rvsection=0&rvparse=1",function(json){ 
 
     $(".searchResults").html(JSON.stringify(json)); 
 

 
     }); 
 
    }); 
 
    }); 
 

Wohin gehe ich falsch? Wenn ich den Code in Codepen ausführen und die Konsole überprüfen, zeigt es einen Fehler "TypeError: document.getElementById (...) ist NULL". Mein Projekt auf codepen - link

Antwort

1
$(document).ready(function(){ 
    $("#searchBut").on("click",function(){//this is click handler 
    var searchTerm=document.getElementById("search").value; 
    searchTerm=searchTerm.replace(/\s/g,"+"); 

    $.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles="+searchTerm+"&rvprop=content&format=json&rvsection=0&rvparse=1",function(json){ 
     $(".searchResults").html(JSON.stringify(json)); 

     }); 
    }); 
    }); 

Aktualisieren Sie Ihre JS-Code mit diesem. id bekommt Wert von ‚Suche‘ nicht ‚#search‘

UPDATE: Header hinzuzufügen können, die folgende

$(document).ready(function(){ 
     $("#searchBut").on("click",function(){//this is click handler 
     var searchTerm=document.getElementById("search").value; 
     searchTerm=searchTerm.replace(/\s/g,"+"); 



    $.ajax({ 
       url: 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles="+searchTerm+"&rvprop=content&format=json&rvsection=0&rvparse=1', //your request URL 
       type: 'GET', 
       dataType: 'json', 
       success: function() { alert('hello!'); }, 
       error: function() { alert('boo!'); }, 
       beforeSend: setHeader 
      }); 
      }); 

      function setHeader(xhr) { 
      xhr.setRequestHeader('securityCode', 'Foo'); //your header key and value 
      } 

     }); 
     }); 
+0

Danke für Ihre Hilfe tun können, aber es funktioniert immer noch nicht. Jetzt bekomme ich einen neuen Fehler in der Konsole - "Cross-Origin-Anfrage gesperrt: Die gleiche Herkunft Richtlinie verbietet das Lesen der Remote-Ressource unter https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=c&rvprop = Inhalt & Format = json & rvsection = 0 & rvparse = 1. (Grund: CORS-Header 'Access-Control-Allow-Origin' fehlt). " – aks

+0

@aks haben meine Antwort aktualisiert. Überprüfen Sie, dass Sie, um Header zu setzen, dies ausprobieren können: Access-Control-Allow-Origin: http: // foo.example' als Schlüssel und Wert – Smit

+0

Ist dieser Code ein Ersatz für die getJSON-Funktion? Oder sollte ich diesen Code zu meinem getJSON hinzufügen? Tut mir leid, wenn die Frage albern erscheint, aber ich bin ein Anfänger. – aks