通过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 SPA路由获取URL为“/#!”而不是“#”[重复]