【问题标题】:Bad Request error when posting data using jQuery in IE only仅在 IE 中使用 jQuery 发布数据时出现错误的请求错误
【发布时间】: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


【解决方案1】:

因此,查看此问题的其他任何人都可以尝试解决此问题。尝试从您的contentType 中删除charset。它解决了上述问题。

这可能与两个浏览器之间的细微编码差异有关,WCF 可能会拒绝传入的请求,因为请求的编码实际上与contentType 中指定的编码不匹配。虽然这不是一个确定的可靠答案。这是我拥有的最好的。

最终代码:

$.ajax({
type: 'POST',
url: '/App_Presentation/BDM/RdmUserCategoryService.svc/GetUserCategoryUsersByCategory',
data: '{ "categoryId" : "' + this.params.catId + '" }',
contentType: 'application/json'
dataType: 'json',
success: function (data) {
    self.editCategoryData({
        CategoryID: ko.observable(categoryId),
        CategoryName: ko.observable(categoryName),
        UserList: ko.observableArray([])
    });

    self.editCategoryData().UserList(data.d);
}});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2019-05-03
    • 2016-09-15
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多