簡體   English   中英

為什么Angular JS $ http.get()在此代碼中不起作用?

[英]Why is Angular JS $http.get() not working in this code?

我正在嘗試從鏈接獲取RSS提要。 ng-click函數getNews("SomeText")正在運行,我已通過在容器中填充一些文本來確認它。 但是, $http.get()無法正常工作。 我現在只想顯示數據,我稍后再解析。

這是我的Angular JS代碼。

var app = angular.module("app",[]);
app.controller("newsController", function($scope, $http) {
  $scope.getNews = function(topic) {

    if (topic === "NAmerica") {
    //The program enters this part, I have confirmed, only $http.get() doesn't work
      $http.get('http://www.usnews.com/rss/education')
      .then(function (response) {
        $scope.message = response;

      });
    }
  };
});

我的HTML文件具有以下結構:

<html ng-app="app">
   <body ng-controller="newsContainer">
       <a href="#" id="NAmerica" ng-click="getNews('NAmerica')">US &amp; Canada</a>
       <p> {{message}} </p>
   </body>
</html>

正如評論中已經提到的那樣,現代瀏覽器不能簡單地通過AJAX請求任意URL。 此限制完全是故意的,稱為“ 同源策略” 默認情況下,瀏覽器只能向執行JavaScript的同一域執行AJAX請求。

通常,您可以采取一些選擇。

  1. 當所請求的站點在其HTTP響應中包含跨域資源共享 (CORS)標頭時,就允許跨域請求,該標頭通常如下所示:

     Access-Control-Allow-Origin: http://yoursite.com 

    當然,只有在您控制要向其請求內容的域時,這才是一種選擇。 如果您要執行對第三方網站的請求,那么通常您自己無能為力。

    順便說一句,您還應該能夠在瀏覽器控制台中看到相應的錯誤消息。

  2. 使用您的域名的服務器端腳本,例如使用PHP或[此處插入隨機的服務器端腳本語言] 你的服務器,你然后通過Ajax請求對劇本要求外國內容。 這樣,您可以解決“同源策略”,因為用戶的瀏覽器現在可以在您自己的域上請求資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM