2013-12-18 81 views
1

我已经使用Knockout.js和Sammy.js编写了一个小型的单页面应用程序,再加上用于将数据发送回服务器的jQuery。在IE中使用jQuery发布数据时发生错误的请求错误

这在Firefox中正常工作,但我所有的POST都在IE中收到“400错误请求”响应。

我已经使用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); 
}}); 

在服务器上的方法不被打到,成功回调没有得到任何打击。当我添加错误回调时,我收到的唯一信息是“错误的请求”错误消息。

有没有人有任何想法?

+0

什么服务器技术,你这个打? ASP? PHP?对不起,我跳了枪。我看到你的URL指向SVC文件。所以WCF? –

+1

你能证实Sammy正确设置了'params.catId'吗?只是想在这里排除任何东西。你也可以在IE和Fiddler上发布某种网络流量的截图吗? –

+0

我已经浏览了JavaScript并正确设置了params.catId值。是的,服务器是一个WCF服务。 我已经在WCF服务上运行跟踪,它正在尝试处理“无法处理contentType”请求的异常。然而,Google上几乎没有关于这方面的内容,我不知道为什么它可以在FF而不是IE中使用? – dotnetdave82

回答

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); 
}}); 
相关问题