2013-12-18 101 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); 
}}); 
相關問題