뉴스 API를 사용하여 json 형식으로 뉴스 콘텐츠를 가져 왔습니다. 사용자가 여러 소스를 선택할 수있는 html 'input 요소'가 있습니다. 소스가 "사용자가 선택한 소스 또는 정의"와 같으면 뉴스 내용이 사용자 선택에 따라 변경됩니다.XMLhttprequest의 동적 URL
jQuery를 사용하지 않는 것을 볼 수 있듯이 jQuery보다는 JS에 더 익숙해 져야합니다. 그래서 나는 순수한 JS로 일하는 것을 선호한다.
내 newsapi는 : https://newsapi.org
이 내 코드입니다. 사용자 선택 기능없이 작동하는
HTML :
<!--dropDown Category-->
<div class="form-group" id="categorySelector">
<label for="newsCat">Select source:</label>
<select class="form-control" id="newsCat">
<option value="the-next-web">the-next-web</option>
<option value="wired-de">wired-de</option>
<option value="time">time</option>
</select>
</div>
JS 코드 :.
var newsRequest,
newsKey = 'XXXXXXXXXXXXXXXXXXX',
newsSource = 'the-next-web'; //defaultSource
//for older broswser
if (window.XMLHttpRequest) {
newsRequest = new XMLHttpRequest();
} else {
newsRequest = new ActiveXObject("Microsoft.XMLHTTP");
} //window.XMLHttpRequest
newsRequest.open("GET", 'https://newsapi.org/v1/articles?source=' + newsSource + '&sortBy=latest&apiKey=' + newsKey);
newsRequest.onreadystatechange = function() {
if ((newsRequest.readyState === 4) && (newsRequest.status === 200)) {
var infoNews = JSON.parse(newsRequest.responseText);
// Action to be performed when the document is read;
var newsHtml = '<ul class="list-group">';
for (var i = 0; i < infoNews.articles.length; i++) {
newsHtml += '<li>';
newsHtml += '<div class="newItem">' + '<a href="' + infoNews.articles[i].url + '" target="_blank">' + '<img src = "' + infoNews.articles[i].urlToImage + '" alt="' + infoNews.articles[i].title + '" title="' + infoNews.articles[i].title + '">' + '</a>';
newsHtml += '<h3 class="newsTitle">' + infoNews.articles[i].title + '</h3>';
newsHtml += '<p class="newsDes">' + infoNews.articles[i].description + '</p>';
newsHtml += '<p class="newsAuthor">' + infoNews.articles[i].author + '</p>';
newsHtml += '</div>';
newsHtml += '</li>';
} //for loops json
newsHtml += '</ul>';
document.querySelector('.newsParent').innerHTML = newsHtml;
} //newsRequest.readyState
} //newsRequest.readyState
//xmlhtpprequest method open
newsRequest.send();
//이 코드와 함께 .. document.querySelector ('#의 newsCat')의 onchange = 함수 (selectedSource) { newsSource = selectedSource.value; // 이것에 의해 여전히 좋지 않습니다. }
왜 당신은 함수의 내부를 사용하지 않으려는? onChange에 대한 이벤트 콜백을 설정하면 내가 생각할 수있는 가장 좋은 아이디어가 될 것입니다. – nocodename
예, 가능합니다. 그러나 나는이 URL을 역동적으로 바꾸는 것을 알아 내기 힘들다. newsRequest.open ("GET", 'https://newsapi.org/v1/articles?source='+ newsSource + '& sortBy = latest & apiKey ='+ newsKey); newSource를 동적으로하고 싶습니다. 위 url을 통해 함수를 호출했지만 결과는 https://newsapi.org/v1/articles?source= '+ function {bla.bla} +'& sortBy = latest & apiKey = '+ newsKey –