通过AngularJS从外部URL获取文本[重复]

Posted

技术标签:

【中文标题】通过AngularJS从外部URL获取文本[重复]【英文标题】:Getting Text from external URL via AngularJS [duplicate] 【发布时间】:2017-02-26 07:31:57 【问题描述】:

我正在尝试从 URL(例如 SOMEURL/ean.php?id=4001513007704)获取 JSON-Text-Stream。结果如下所示:


    "product": 
        "ean_id": "4001513007704",
        "title": "Gerolsteiner Mineralwasser",
...
     ,
    "success": true

如您所见,这些是扫描项目的一些信息。 我使用 URL (--> http://www.w3schools.com/angular/tryit.asp?filename=try_ng_http_get ) 搜索了实现,这个示例仅适用于内部 URL。 Google 和其他来源将该变量留空。

这确实有效。它返回输入网站的 html 代码:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl"> 

<p>Today's welcome message is:</p>

<h1>myWelcome</h1>

</div>

<p>The $http service requests a page on the server, and the response is set as the value of the "myWelcome" variable.</p>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) 
  $http.get("http://www.w3schools.com/angular/default.asp")
  .then(function(response) 
      $scope.myWelcome = response.data;
  );
);
</script>

</body>
</html>

这不是(变量留空)。在这种情况下,我使用 Google,但通常我们会使用其他来源!

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) 
  $http.get("http://google.com/")
  .then(function(response) 
      $scope.myWelcome = response.data;
  );
);
</script>

我认为这是因为网站的安全设置..

如何从 URL 中获取数据?有什么解决方法吗?

感谢您的任何帮助!

【问题讨论】:

已经投票关闭。 【参考方案1】:

您收到此错误是因为您没有定义要包含在 html 中的角度模块。 尝试在 w3 学校中运行上面的代码,站点中的链接 http://google.com/ 如图所示

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl"> 

<p>Today's welcome message is:</p>

<h1>myWelcome</h1>

</div>

<p>The $http service requests a page on the server, and the response is set as the value of the "myWelcome" variable.</p>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) 
  $http.get("http://google.com/")
  .then(function(response) 
      $scope.myWelcome = response.data;
  );
);
</script>

</body>
</html>

【讨论】:

嘿!对不起,但我不明白你想告诉我什么。您的屏幕截图也将空间留空!你能具体解释一下你的意思吗? 屏幕截图描述了当我点击 google.com 时它响应成功,然后打印消息,这意味着它可以工作【参考方案2】:

response.data 只会在响应中有 data 对象时返回。

当您向google.com 发送请求时得到的响应是这样的:

<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.in/">here</A>.
</BODY></HTML>

这是因为该 URL 提供的是 HTML,而不是一些 JSON 响应。

如果您对此进行response.data,它将是未定义的,因为那里没有数据。如果您找到了包含 JSON 数据的正确端点,您将得到响应。

例如,如果您将 url 更改为 https://api.github.com/users/mralexgray/repos,您将看到数据。

【讨论】:

不应该 response.data 从网站返回至少 HTML 代码吗?它不应该是空白的.. 响应会。 response.data 不会。因为这不是 JSON,所以不能使用点符号

以上是关于通过AngularJS从外部URL获取文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从外部 URL 获取 JSON 数据并将其以纯文本形式显示在 div 中

从 angularJS 部分链接到具有不同域的外部 URL

AngularJS SPA路由获取URL为“/#!”而不是“#”[重复]

从外部api获取数据时反应应用程序中的Cors错误[重复]

如何从表格视图的自定义单元格内的文本字段中获取值(标签)以发布到 URL [重复]

AngularJs,如何发送 $http 的参数 [重复]