Javascript 如何使用AngularJS上传FormData对象
我是angular js新手,希望提交包含图像的多部分/表单数据,它的$http.post()方法只支持json格式,所以我想将formdata对象转换为json格式Javascript 如何使用AngularJS上传FormData对象,javascript,json,angularjs,form-data,Javascript,Json,Angularjs,Form Data,我是angular js新手,希望提交包含图像的多部分/表单数据,它的$http.post()方法只支持json格式,所以我想将formdata对象转换为json格式 $scope.SubmitForm=function() { url = siteurl + '/admin/' + $scope.module + '/add'; var form=document.getElementById("addForm"); var formData=new FormData
$scope.SubmitForm=function()
{
url = siteurl + '/admin/' + $scope.module + '/add';
var form=document.getElementById("addForm");
var formData=new FormData(form);
$http({
url : url,
method : "POST",
data : formData,
})
.then(function(responseText) {
alert(JSON.stringify(responseText));
//process data
},function(){
alert("hello from error");
});
}
它对我不起作用;我试着制作json格式的数据,效果很好
formData={
"first_name" : $('#first_name').val(),
"last_name" : $('#last_name'),
//....
};
但是我没有任何想法将我的图像文件附加到这种格式;我应该怎么做才能得到我的工作
是否有任何方法(函数)将formdata对象转换为json格式在使用angular格式的表单时,您确实应该使用
ng模型
(您能在示例中提供表单吗?)。它创建了一个作用域变量以在控制器中使用,如果已经定义了它,则将具有双向绑定。。。例如,由于您的表单不存在,我会这样做,这是简化的(未经测试)
这里有更多信息。。。W3schools有一些例子:它应该这样建造:
var form = document.getElementById('addForm');
var fd = new FormData(form);
var file = this.files[0];
fd.append("afile", file);
// These way you add extra parameters
fd.append("first_name", $('#first_name').val());
fd.append("last_name", $('#last_name').val());
参考示例-通过在$http配置行中放置两行代码来解决(谢谢大家)-
这对我来说很有用转换数据。但是,如果您是angular,为什么不使用ng模型呢?谢谢您的建议,但是ng模型不适用于文件,我有新的指令要执行,但它很麻烦,这并不能回答OP的问题。
$scope.submitForm = function(){
var data = $scope.fields,
url = '/admin/' + $scope.module + '/add'; // I assume $scope.module is available from elsewhere...
$http.post(url, data).then(function(resp){
// do stuff...
});
}
var form = document.getElementById('addForm');
var fd = new FormData(form);
var file = this.files[0];
fd.append("afile", file);
// These way you add extra parameters
fd.append("first_name", $('#first_name').val());
fd.append("last_name", $('#last_name').val());
$http({
url : url,
method : "POST",
data : formData,
transformRequest: angular.identity, // see the angugular js documentation
headers : {'Content-Type':undefined}// setting content type to undefined that change the default content type of the angular js
}).then(function(responseText){
alert(JSON.stringify(responseText));
///$scope.tablerows=$scope.totaltablerows;
///$scope.searchFunction();
},function(){
alert("hello from error");
});