#javascript #xml #feed
#javascript #xml #канал
Вопрос:
Я пытаюсь использовать javascript и читать из http://search .yahooapis.com / WebSearchService /V1/WebSearch?appid=YahooDemo amp;query=persimmonamp;results=2 с использованием xmlhttp. Я получаю сообщение об ошибке, потому что он не может читать
<script type="text/javascript">
url="http://search.yahooapis.com/ WebSearchService /V1/webSearch?appid=YahooDemo amp;query=persimmonamp;results=2";
var xmlhttp = null;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
if ( typeof xmlhttp.overrideMimeType != 'undefined')
{
xmlhttp.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert('Perhaps your browser does not support xmlhttprequests?');
}
xmlhttp.open('GET', url, true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 amp;amp; xmlhttp.status == 200)
{
alert("success");
}
else
{
alert("failure");
}
};
</script>
Комментарии:
1. Там ошибка «сбой», блок в предупреждении части else («сбой»)
Ответ №1:
Если ваш веб-сайт не размещен на search.yahooapis.com
, вы, вероятно, сталкиваетесь с той же политикой происхождения.
Это приводит к возврату вашего исходящего запроса с 404
кодом состояния:
Вы должны использовать JSONP вместо XMLHttpRequest
:
<!DOCTYPE html>
<html>
<head>
<title>JavaScript file download</title>
<script type="text/javascript">
function yahooApi(resp) {
var scriptEl = document.getElementById("yahooApiJsonP");
scriptEl.parentNode.removeChild(scriptEl);
console.log(resp);
}
window.onload = function() {
var scriptEl = document.createElement("script");
scriptEl.id = "yahooApiJsonP";
scriptEl.src = "http://search.yahooapis.com/WebSearchService/V1/webSearch?output=jsonamp;callback=yahooApiamp;appid=YahooDemoamp;query=persimmonamp;results=2";
document.body.appendChild(scriptEl);
};
</script>
</head>
<body>
<p>This is a test</p>
</body>
</html>
Это отправит запрос, который вернет 200 OK
статус:
Также похоже, что эта служба была закрыта: