javascript - Angularjs $http 不发送表单数据到服务器

标签 javascript angularjs angular-http

如果我使用 jquery ajax,下面的代码可以工作,但是 Angular 的 $http 不会使用下面的代码向服务器发送任何数据:

myapp.factory('startCampFactory',function($http,$q,$rootScope){
  return {
    startNewCampaign : function(){

      var e = $("input#email");
      var email = e.val();
      var campname = $("input#campaignname").val();
      var about = $("textarea#about").val();
      var tamt = $("input#targetamount").val();
      var edate = $("input#enddate").val();
      var invitees = $("input#invitees").val();
      var file_data = $("#file").prop("files")[0];
      var form_data = new FormData();     

      form_data.append("file",file_data);
      form_data.append("email",email);
      form_data.append("campaignname",campname);
      form_data.append("about",about);
      form_data.append("targetamount",tamt);
      form_data.append("enddate",edate);
      form_data.append("invitees",invitees);

      console.log(email+about+campname);

      var deferred = $q.defer();

      $http({
           method:'POST',
           url:'/startcampaign',
           data:form_data,
           headers:
             {
               'Content-Type'​ :'application/x-www-form-urlencoded'
             }
        }).success(function(data,status,headers,config) { 
          $rootScope.$apply( function() { 
          deferred.resolve(); 
        });
     }).error(function(){
        $rootScope.$apply(function() 
          { 
            deferred.reject();
          }); 
     });
     return deferred.promise;
   }
});

最佳答案

尝试这样的事情:

.service('fileUpload', ['$http', function ($http) {
  this.uploadFileToUrl = function(file, uploadUrl){
    var fd = new FormData();
    fd.append('file', file);
    $http.post(uploadUrl, fd, {
        transformRequest: angular.identity,
        headers: {'Content-Type': undefined}
    })
    .success(function(){
    })
    .error(function(){
    });
  }
}]);

请参阅此链接以获取说明:

http://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs

关于javascript - Angularjs $http 不发送表单数据到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19064341/

相关文章:

javascript - 悬停事件不针对 child

javascript - 如何使用webpack在ngDialog模板中查找html文件?

javascript - $http 获取参数不起作用

mysql - Angular http请求重试导致多次插入

javascript - 下拉框值启用字段

javascript - 如何使用 javascript/jquery 查找 anchor 标记的类别?

javascript - Mouseup 事件与可见性切换冲突

javascript - 如何在 Angular UI-Select 中自定义组标签

javascript - Angular JS官方教程-第2步单元测试错误

Angular 6 : how to get http at an interval