JavaScript xmlhttp считывается из канала

#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 статус:введите описание изображения здесь


Также похоже, что эта служба была закрыта:

введите описание изображения здесь