Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AngularJS上传FormData对象_Javascript_Json_Angularjs_Form Data - Fatal编程技术网

Javascript 如何使用AngularJS上传FormData对象

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

我是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(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");
        });