AngularJs $ http.post没有在IE中发布

时间:2013-12-05 09:45:13

标签: angularjs

此代码:

        close: function (id) {
            var defered = $q.defer();

            $http.post('api/TopicSelection/Close', id).
                success(function (data) {
                    defered.resolve(data);
                }).
                error(function (data, status, headers, config) {
                    defered.reject(data.message);
                });

            return defered.promise;
        },

在Chrome中完美运行。但是在IE 9中,会立即调用错误回调。数据,状态,标题为空,根据Fiddler / IE网络流量,请求不会被发送。

它出了什么问题?

提示

经过一番调查后,似乎IE 9&当我简单地将id作为字符串传递给消息体时,AngularJS不处理这种情况。当我把它改为:

$http.post('api/TopicSelection/Close', {id: id})

然后POST发送消息正文:

  

{ “ID”:4611}

但是,我不希望序列化对象。我希望将一个简单的请求消息正文作为字符串:

4611

2 个答案:

答案 0 :(得分:3)

问题已解决。 id必须为字符串

$http.post('api/TopicSelection/Close', id.toString())

Angular的参考文献:

data – {string|Object} – Data to be sent as the request message data.

唯一令人讨厌的事情是没有toString的版本与浏览器之间没有连贯性......

答案 1 :(得分:-1)

尝试这样的事情:

var xsrf = $.param({"id": id});

        return $http({
          method  : 'POST',
          url     : 'api/TopicSelection/Close',
          data    : xsrf,
          headers : {'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'}
        });