此代码:
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
答案 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'}
});