如何使用angular $ http发送FormData

时间:2015-11-05 05:20:04

标签: javascript angularjs

var formData = new FormData();

formData.append('type', type);
formData.append('description', description);
formData.append('photo', photo);  

var request = new XMLHttpRequest();

request.open('POST', '{{ path('my_webservice') }}');
request.send(formData);

如何使用FormData发送$http

上述代码的主要问题是我不知道如何在收到响应时生成回调。

所以,如果我能在Angular I中进行更熟悉的领域。

由于

修改

这似乎是异常的。在易于实施方面,似乎比任何Angular解决方案都要好。

                request.onload = function (e) {
                    if (request.readyState == 4 && request.status == 200) {
                        console.log(request.responseText);
                    }
                };

3 个答案:

答案 0 :(得分:1)

您可以使用$http发帖。

但必须将content-type更改为application/x-www-form-urlencoded,并且应使用key=value对序列化数据。

应将这些设置注入XMLHttpRequest的基础$http对象。

Here是一篇文章,向您展示如何做到这一点。

答案 1 :(得分:0)

在表单中添加ng-submit属性,并为其分配一个函数,以使用$ http服务处理POST请求。 Angular使用promises API处理http响应。以下是https://docs.angularjs.org/api/ng/service/ $ http:

的示例
$http({
  method: 'GET',
  url: '/someUrl',
  data: { type: 'myType',
          description:'myDescription'
 }
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

答案 2 :(得分:0)

<强> AngularJS

$http.post(myRestUrl, {my:"object"}).success(function(data, status, headers, config){/* DO STUFF*/});

https://docs.angularjs.org/api/ng/service/$http

了解详情

或者使用 XMLHttpRequest 执行此操作:

client.onreadystatechange = function() {
  if(this.readyState == 2) {
    print(this.getAllResponseHeaders());
  }
}

http://www.w3.org/TR/XMLHttpRequest/#the-send%28%29-method