2017-01-31 10 views
1

위키피디아 뷰어를 개발 중이며 Wikipedia API에서 일부 데이터를 추출하려고합니다. 이것은 정상적인 요청인데,이 방법이 어떤 응답을하지 않는 이유가 무엇입니까? 가져 오기 라이브러리를 사용하고 있습니다. console.log (data) 행이 전혀 실행되지 않습니다.위키 백과 API에 대한 가져 오기 라이브러리 사용 - 자바 스크립트

function getArticleList() { 
    var searchFor = ""; 
    searchFor = document.getElementById('intext').value; 
    console.log(searchFor); 
    fetch("https://en.wikipedia.org/w/api.php?action=opensearch&search=" + searchFor + "&limit=5").then(function(resp) { 
     console.log("trySearch"); 
     return resp.json() 
    }).then(function(data) { 
     console.log(data); 
     document.querySelector.artName.innerText = data.object[1]; 
     document.querySelector.textArt.innerText = data.object[0]; 
     document.querySelector.href = data.object[2] 
    }) 
}; 
+0

콘솔에 오류가 있습니까? "trySearch"로그가 성공적으로 기록됩니까? 'document.querySelector ....'줄은 확실히 실패 할 것이다. –

+0

마이크, "trySearch"는 기록하지 않습니다. 어떤 경우에 가져 오기가 실패하는 경우입니다. 네가 언급하는 선이 효과가 없을 거라는 걸 알기 때문에 내가하려는 일을 낫게 할 뿐이야. 고맙습니다. –

+0

덧붙여 위의 코드는 "가져 오기 라이브러리"를 사용하지 않고 기본 [Fetch API] (https://fetch.spec.whatwg.org/#fetch-api)를 사용하고 있습니다. [Fetch API]는 [ MDN에서 기사 가져 오기 사용] (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) – sideshowbarker

답변

-2

fetch library를 사용하는 특별한 이유는 무엇입니까? 이것은 간단한 JQuery AJAX를 사용하여 수행 할 수 있습니다.

function getArticleList() { 

var searchFor = document.getElementById('intext').value; 
var response=""; 
console.log(searchFor); 
$.ajax({ 
    url: "https://en.wikipedia.org/w/api.php?action=opensearch&search="+searchFor+"&limit=5", 
    dataType: 'jsonp', 
    success: function(data){  
     console.log(data); 
     response=data; 
    } 
}).done(function(response) { 
     console.log(response); 
     document.querySelector.artName.innerText = response.object[1]; 
     document.querySelector.textArt.innerText = response.object[0]; 
     document.querySelector.href = response.object[2]; 
    }); 

}};

+0

Aaron의 답이 올바른 것이어야합니다. 원점 추가 = 요청 URL에 * 쿼리 매개 변수. jQuery는 간단한 가져 오기 모듈보다 훨씬 길며 그가 document.getElementById를 사용하고 있기 때문에 분명히 jQuery를 사용하고 있지 않으며이 인스턴스에서 사용해야합니다. –

+0

OP는 특별히 jQuery를 사용하지 말 것을 요청했습니다. 또한 이런 종류의 응용 프로그램에 불필요한 무게를 추가합니다. – twhite96

3

위키 미디어 자료에서 'documentation :'익명 요청의 경우 발신 쿼리 문자열 매개 변수를 *로 설정하여 어디에서나 요청을 허용 할 수 있습니다. ' 나는 '벨기에'내 자신의 검색 채워

fetch("https://en.wikipedia.org/w/api.php?&origin=*&action=opensearch&search=Belgium&limit=5").then(function(resp) { 
    console.log(resp); 
    return resp.json() 
}).then(function(data) { 
    console.log(data); 

공지 사항,하지만 코드는 바로 수정 작업을해야합니다

은 나를 위해 일한 다음.

+0

-2는이 대답의 첫 번째 버전에서 나옵니다. 그래서 적절하게 편집되었습니다. – aaron