【发布时间】:2013-12-18 17:14:45
【问题描述】:
我使用 Knockout.js 和 Sammy.js 编写了一个小型单页应用程序,以及用于将数据发回服务器的 jQuery。
这在 Firefox 中运行良好,但我所有的 POST 在 IE 中都得到“400 Bad Request”响应。
我使用 Fiddler 来查看发生了什么,我能看到的唯一区别是 IE 在 Referer 标头中包含哈希,但我认为这不会导致问题。
这是我的 jQuery 帖子:
$.ajax({
type: 'POST',
url: '/App_Presentation/BDM/RdmUserCategoryService.svc/GetUserCategoryUsersByCategory',
data: '{ "categoryId" : "' + this.params.catId + '" }',
contentType: 'application/json; charset=utf=8',
dataType: 'json',
success: function (data) {
self.editCategoryData({
CategoryID: ko.observable(categoryId),
CategoryName: ko.observable(categoryName),
UserList: ko.observableArray([])
});
self.editCategoryData().UserList(data.d);
}});
服务端的方法没有命中,成功回调也没有命中。当我添加错误回调时,我得到的唯一信息是“错误请求”错误消息。
有人有什么想法吗?
【问题讨论】:
-
您使用的是什么服务器技术? ASP? php?对不起,我开枪了。我看到您的 URL 指向 SVC 文件。那么 WCF 呢?
-
您能否确认 Sammy 正确设置了
params.catId?只是想排除这里的任何事情。您也可以在 IE 和 Fiddler 中发布某种网络流量的屏幕截图吗? -
我已经逐步完成了 JavaScript,并且 params.catId 值设置正确。是的,服务器是 WCF 服务。我在 WCF 服务上运行了一个跟踪,它在尝试处理“无法处理 contentType”的请求时遇到异常。然而,谷歌上几乎没有这方面的内容,我不知道为什么它可以在 FF 而不是 IE 中工作?!
-
contenttype在两种浏览器中的外观如何。有什么不同吗? -
也许尝试从
contentType中删除charset?我知道这是一场猎巫,但我想知道在这种情况下是否有必要。
标签: javascript jquery wcf knockout.js sammy.js