在下面的代码中,AngularJS $http方法调用URL,并将xsrf对象作为"请求有效负载"提交(如Chrome调试器网络选项卡中所述).jQuery $.ajax方法执行相同的调用,但将xsrf提交为"Form Data".
如何让AngularJS将xsrf作为表单数据而不是请求有效负载提交?
var url = 'http://somewhere.com/';
var xsrf = {fkey: 'xsrf key'};
$http({
method: 'POST',
url: url,
data: xsrf
}).success(function () {});
$.ajax({
type: 'POST',
url: url,
data: xsrf,
dataType: 'json',
success: function() {}
});
Run Code Online (Sandbox Code Playgroud) 谁能告诉我为什么以下声明不会将发布数据发送到指定的网址?当我打印$ _POST时,在服务器上调用url - 我得到一个空数组.如果我在将数据添加到数据之前在控制台中打印消息 - 它会显示正确的内容.
$http.post('request-url', { 'message' : message });
Run Code Online (Sandbox Code Playgroud)
我也尝试将数据作为字符串(具有相同的结果):
$http.post('request-url', "message=" + message);
Run Code Online (Sandbox Code Playgroud)
当我以下列格式使用它时它似乎正在工作:
$http({
method: 'POST',
url: 'request-url',
data: "message=" + message,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
Run Code Online (Sandbox Code Playgroud)
但有没有办法用$ http.post()来做 - 并且我总是必须包含标题才能使它工作?我相信上面的内容类型是指定发送数据的格式,但我可以将其作为javascript对象发送吗?
我有以下Angular函数:
$scope.updateStatus = function(user) {
$http({
url: user.update_path,
method: "POST",
data: {user_id: user.id, draft: true}
});
};
Run Code Online (Sandbox Code Playgroud)
但无论什么时候调用这个函数,我都会进入ReferenceError: $http is not defined我的控制台.有人可以帮我理解我在做错了吗?
给出AngularJS中的Ajax请求
$http.get("/backend/").success(callback);
Run Code Online (Sandbox Code Playgroud)
如果启动另一个请求(相同的后端,例如不同的参数),取消该请求的最有效方法是什么.
我有这个jQuery代码,可以很好地交叉起源:
jQuery.ajax({
url: "http://example.appspot.com/rest/app",
type: "POST",
data: JSON.stringify({"foo":"bar"}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
console.log("success");
},
error: function (response) {
console.log("failed");
}
});
Run Code Online (Sandbox Code Playgroud)
现在我想把它转换成Angular.js代码而没有任何成功:
$http({
url: "http://example.appspot.com/rest/app",
dataType: "json",
method: "POST",
data: JSON.stringify({"foo":"bar"}),
headers: {
"Content-Type": "application/json; charset=utf-8"
}
}).success(function(response){
$scope.response = response;
}).error(function(error){
$scope.error = error;
});
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
有谁知道为什么这不起作用?
$http
.get('accept.php', {
source: link,
category_id: category
})
.success(function (data, status) {
$scope.info_show = data
});
Run Code Online (Sandbox Code Playgroud)
这确实有效:
$http
.get('accept.php?source=' + link + '&category_id=' + category)
.success(function (data, status) {
$scope.info_show = data
});
Run Code Online (Sandbox Code Playgroud) let httpParams = new HttpParams().set('aaa', '111');
httpParams.set('bbb', '222');
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?它只设置'aaa'而不是'bbb'
另外,我有一个对象{aaa:111,bbb:222}如何在不循环的情况下设置所有值?
更新(这似乎工作,但如何避免循环?)
let httpParams = new HttpParams();
Object.keys(data).forEach(function (key) {
httpParams = httpParams.append(key, data[key]);
});
Run Code Online (Sandbox Code Playgroud) 当使用AngularJS"http get then"构造(promises)时,如何处理HTTP错误,例如500?
$http.get(url).then(
function(response) {
console.log('get',response)
}
)
Run Code Online (Sandbox Code Playgroud)
问题是,对于任何非200 HTTP响应,都不会调用内部函数.
我正在尝试编写一个自动完成指令,该指令使用$ http请求从服务器获取数据(不使用任何外部插件或脚本).目前它仅适用于静态数据.现在,我知道我需要将$ http请求插入到source:指令中,但是我找不到关于这个主题的任何好的文档.
$http.post($scope.url, { "command": "list category() names"}).
success(function(data, status) {
$scope.status = status;
$scope.names = data;
})
.
error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
});
Run Code Online (Sandbox Code Playgroud)
app.directive('autoComplete', function($timeout) {
return function(scope, iElement, iAttrs) {
iElement.autocomplete({
source: scope[iAttrs.uiItems],
select: function() {
$timeout(function() {
iElement.trigger('input');
}, 0);
}
});
};
});
Run Code Online (Sandbox Code Playgroud)
<input auto-complete ui-items="names" ng-init="manualcat='no category entered'" ng-model="manualcat">
Run Code Online (Sandbox Code Playgroud)
那么,我如何正确地将这一切拼凑成Angular方式呢?
angular-http ×10
angularjs ×9
javascript ×3
ajax ×2
post ×2
promise ×2
angular ×1
autocomplete ×1
cancellation ×1
cross-domain ×1
directive ×1
http ×1
jquery ×1