^不是运行函数
^Not running function
出于某种原因,脚本没有 运行 或 return 回答。
控制台什么都不是。
试图从 yandex.transtale 站点 (https://tech.yandex.com/translate/doc/dg/reference/translate-docpage/) 获得答案
代码:http://jsbin.com/jolijep/edit?html,js,console,output
var app = angular.module('jsbin', []);
app.controller('DemoCtrl', function($scope, $http) {
var url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
keyAPI = "trnsl.1.1.20130922T110455Z.4a9208e68c61a760.f819c1db302ba637c2bea1befa4db9f784e9fbb8";
var vm = this;
$scope.SendData = function() {
// тут данные
var textApi = 'Hello';
var langApi = 'en-ru';
var text1 = 'Hello';
var data = "key=" + keyAPI + "&text=" + textApi + "&lang=" + langApi;
$http.post(url, data)
.success(function(data, status, headers, config) {
vm.data = response.data;
$scope.PostDataResponse = data;
console.log(data);
})
.error(function(data, status, header, config) {
$scope.ResponseDetails = "Data: " + data +
"<hr />status: " + status +
"<hr />headers: " + header +
"<hr />config: " + config;
});
};
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Angular JS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="weather.js"></script>
</head>
<body ng-app="jsbin">
<div ng-controller="DemoCtrl as vm">
<script src="weather.js"></script>
<button ng-click="SendData()">Send</button>
<br>Data: {{PostDataResponse}}
<br>{{vm.data}} {{vm.PostDataResponse}} Data: {{scope.PostDataResponse}} {{vm.data}}
</div>
</body>
</html>
如果您查看 Yandex 翻译 API 参考资料,它会要求您以 params(参数) 的形式传递您正在发出的请求的信息。这些参数将附加到请求 URL。
通过 POST 请求从 API 获取信息的其他方法是以请求正文的形式传递信息。
但是带有 POST 请求的 Yandex 翻译 API 要求提供附加到 url 的信息。
var data = "key="+keyAPI+"&text="+textApi+"&lang="+langApi
当发出 POST 请求时,这个 data 变量应该附加到 url 变量到 API。但是,
$http.post(url, data)
调用 $http 方法使数据被解释为 post 请求的主体,而不是附加 data 变量拨打电话时 url。
AngularJS 的 $http API 的更简洁和正确的实现是将所有参数放在一个对象中,其中键是参数类型,值是参数值。
var params = {
key: keyAPI,
text:textApi,
lang:langApi
}
现在在 params 对象中,您保存了发出请求时要传递的所有信息。
其次,您需要修改 $http 请求,以便它知道要将哪些参数附加到 url。我正在使用更基本的 $http 方法而不是 $http.post 方法,我会清楚地提到什么应该是基础 url、HTTP 请求的方法类型以及最后要传递的参数API.
的请求
$http({
url: url,
method: 'POST',
params: params
})
.success(function(data,headers,status,config){
$scope.PostDataResponse = data;
vm.data = data;
console.log(data);
})
.error(function(data,headers,status,config){
$scope.ResponseDetails = "Data: " + data +
"<hr />status: " + status +
"<hr />headers: " + header +
"<hr />config: " + config;
});
您的代码中的另一件事是 $scope.PostDataResponse
的初始化
$scope.PostDataResponse = response.data; //You are not getting any argument named response by the success function call
正确的做法是
$scope.PostDataResponse = 数据;
现在,如果您 运行 修改后的代码应该 运行 很好。
如果一切都正确完成,那么在开发人员控制台中,您会发现在请求成功后记录了一个对象。
Object with the success of the call
在您的网页中,您也会看到相同的对象。
出于某种原因,脚本没有 运行 或 return 回答。 控制台什么都不是。 试图从 yandex.transtale 站点 (https://tech.yandex.com/translate/doc/dg/reference/translate-docpage/) 获得答案 代码:http://jsbin.com/jolijep/edit?html,js,console,output
var app = angular.module('jsbin', []);
app.controller('DemoCtrl', function($scope, $http) {
var url = "https://translate.yandex.net/api/v1.5/tr.json/translate";
keyAPI = "trnsl.1.1.20130922T110455Z.4a9208e68c61a760.f819c1db302ba637c2bea1befa4db9f784e9fbb8";
var vm = this;
$scope.SendData = function() {
// тут данные
var textApi = 'Hello';
var langApi = 'en-ru';
var text1 = 'Hello';
var data = "key=" + keyAPI + "&text=" + textApi + "&lang=" + langApi;
$http.post(url, data)
.success(function(data, status, headers, config) {
vm.data = response.data;
$scope.PostDataResponse = data;
console.log(data);
})
.error(function(data, status, header, config) {
$scope.ResponseDetails = "Data: " + data +
"<hr />status: " + status +
"<hr />headers: " + header +
"<hr />config: " + config;
});
};
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Angular JS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="weather.js"></script>
</head>
<body ng-app="jsbin">
<div ng-controller="DemoCtrl as vm">
<script src="weather.js"></script>
<button ng-click="SendData()">Send</button>
<br>Data: {{PostDataResponse}}
<br>{{vm.data}} {{vm.PostDataResponse}} Data: {{scope.PostDataResponse}} {{vm.data}}
</div>
</body>
</html>
如果您查看 Yandex 翻译 API 参考资料,它会要求您以 params(参数) 的形式传递您正在发出的请求的信息。这些参数将附加到请求 URL。
通过 POST 请求从 API 获取信息的其他方法是以请求正文的形式传递信息。
但是带有 POST 请求的 Yandex 翻译 API 要求提供附加到 url 的信息。
var data = "key="+keyAPI+"&text="+textApi+"&lang="+langApi
当发出 POST 请求时,这个 data 变量应该附加到 url 变量到 API。但是,
$http.post(url, data)
调用 $http 方法使数据被解释为 post 请求的主体,而不是附加 data 变量拨打电话时 url。
AngularJS 的 $http API 的更简洁和正确的实现是将所有参数放在一个对象中,其中键是参数类型,值是参数值。
var params = {
key: keyAPI,
text:textApi,
lang:langApi
}
现在在 params 对象中,您保存了发出请求时要传递的所有信息。
其次,您需要修改 $http 请求,以便它知道要将哪些参数附加到 url。我正在使用更基本的 $http 方法而不是 $http.post 方法,我会清楚地提到什么应该是基础 url、HTTP 请求的方法类型以及最后要传递的参数API.
的请求$http({
url: url,
method: 'POST',
params: params
})
.success(function(data,headers,status,config){
$scope.PostDataResponse = data;
vm.data = data;
console.log(data);
})
.error(function(data,headers,status,config){
$scope.ResponseDetails = "Data: " + data +
"<hr />status: " + status +
"<hr />headers: " + header +
"<hr />config: " + config;
});
您的代码中的另一件事是 $scope.PostDataResponse
的初始化 $scope.PostDataResponse = response.data; //You are not getting any argument named response by the success function call
正确的做法是 $scope.PostDataResponse = 数据;
现在,如果您 运行 修改后的代码应该 运行 很好。
如果一切都正确完成,那么在开发人员控制台中,您会发现在请求成功后记录了一个对象。
Object with the success of the call
在您的网页中,您也会看到相同的对象。