提问人:nordictelecom 提问时间:9/6/2021 更新时间:9/6/2021 访问量:67
AngularJS 的$htttp没有像 jQuery 的 $ajax 那样将表单数据传递到 POST 请求中
AngularJS's $htttp not passing form data into the POST request like jQuery's $ajax
问:
我在将jQuery的请求转换为Angularjs的请求(Angularjs v1.8.x)时遇到问题。$.ajax
$http
我有一个带有一个文本输入和一个图像/文件输入的表单,我正在通过表单的提交按钮发送请求。ng-click="uploadImage($e)"
我认为问题在于 Angularjs 没有将填写的表单数据与请求一起发送。
我的请求工作正常,但对于我的请求,浏览器的开发者控制台中没有 - 请参阅下面的屏幕截图。对我的请求的响应是 ,但返回的数据不正确,因为表单数据从未随请求一起发送。$.ajax
$http
Form Data
$http
200
对于两者,我使用此函数准备表单数据:$.ajax
$http
/**
* @var form is an HTML element
*/
function prepData(form) {
var fdata = new FormData();
for(var i = 0; i < form.length; i++) {
var NN = form[i].nodeName.toUpperCase();
var name = form[i].name;
if(typeof name != "undefined" && name != "") {
if(NN == "INPUT") {
var NT = form[i].type.toUpperCase();
if(NT == "FILE") {
for(var j = 0; j < form[i].files.length; j++) {
fdata.append(name, form[i].files[j], form[i].files[j].name);
}
} else if(NT == "CHECKBOX" || NT == "RADIO") {
if(form[i].checked == true) {
fdata.append(name, form[i].value);
}
} else {
fdata.append(name, form[i].value);
}
} else {
fdata.append(name, form[i].value);
}
}
}
return fdata;
}
$.ajax
请求选项:
var ajaxOptions = {
type : "POST",
async : true,
url : getFullUrl(),
data : prepData(form),
dataType : self.dataType,
beforeSend: function (request) {
request.setRequestHeader("translate", User.settings.lang);
request.setRequestHeader("userid", User.logged);
}
};
$http
请求选项:
var httpOptions = {
type : "POST",
async : true,
url : getFullUrl(),
data : prepData(form),
dataType : self.dataType,
headers : {
"translate": User.settings.lang,
"userid": User.logged,
"X-Requested-With": "XMLHttpRequest",
"Content-Type": undefined,
"transformRequest": []
},
eventHandlers: {
"readystatechange": function(event) {
this.xhr = event.currentTarget;
}
}
};
当我比较和在浏览器的开发人员工具中时,我可以看到它们的响应标头是相同的,但请求标头在这些属性中有所不同(请参阅下面的屏幕截图):$.ajax
$http
Accept
Content-Type
答:
0赞
DVN-Anakin
9/6/2021
#1
相当于 $.ajax 的是 $http 的。type: ...
method: ...
通常,请求应如下所示:$http
var httpOptions = {
method : "POST",
// ...
};
$http(httpOptions).then(function(res) {
// ...
}, function(res) {
// ...
});
评论