我正在測試Azure表存儲的REST API服務,我可以從表中獲取沒有問題的數據,但似乎無法從javascript更新記錄。使用Fiddler進行相同的操作反而奏效。 URL是通過REST Web API更新Azure表存儲記錄
的https:// 「我的賬戶」 .table.core.windows.net/p73cca0789a574fd4a5b98012a8bb56bf(PartitionKey =%27Settings%27,RowKey =%27GeneralSettings_UICulture_1%27)SV = 2014年2月14日& TN = p73cca0789a574fd4a5b98012a8bb56bf & SPK =設置& EPK =設置& SIG = UE%2BdY4qa0Kk8MJ083jzuAqn7miGmIBV2C4DK6x7LL%雙品%3D & SE = 2014-07-10T12%3A02%3A12Z & SP = raud
在我的Fiddler集中放置如列舉HTTPMethod並將此作爲請求身體:
{
Value: 'en',
Version: 1,
SettingName: 'GeneralSettings'
}
和它的作品好,如果我檢查在Azure上表中的值是否正確 更新從我的web應用程序,而不是,我用amplifyjs使AJAX調用,定義這樣的方法:
amplify.request.define('manageSetting', 'ajax', {
url: url,
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader("Content-Type", "application/json");
},
decoder: "defaultBehavior",
type: httpMethod
});
我得到一個400錯誤的請求錯誤,與消息:「其中一個請求輸入無效」 在Firebug中,我可以看到這些都是我的請求頭:
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length 46
Content-Type application/json; charset=UTF-8
DNT 1
Host "myaccount".table.core.windows.net
Origin https://localhost:444
Referer https://localhost:444/MyWebApp/projects/dde1b522-0c7d-40f1-8e08-5c39a1ce91ef
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0
x-ms-date Wed, 09 Jul 2014 14:10:24 GMT
x-ms-version 2014-02-14
在Firebug要求的「把」標籤狀態:
Value=en&Version=1&SettingName=GeneralSettings
我錯過了什麼嗎? Thanx
是的,我所做的,其實工作的GET操作正確。從Fiddler的'Inspector'頁面,我看到json對象發送正確。我看到的唯一區別是在Firebug中,在使用POST方法的另一個Web API調用中,我發現發送到服務器的值以查詢字符串形式顯示(例如Value = en&Version = 1&SettingName = GeneralSettings),並且還直接顯示上面,鍵值對中的'參數'。在我不工作的PUT方法中,我只將它們看作查詢字符串值。我已經將內容類型設置爲application/json,所以我不知道問題可能是什麼 –