私は次のようにjQueryでAJAX POSTを実行しています:
self.post = function (path, data) {
return $.ajax({
url: this.createUri(path),
type: "POST",
contentType: "application/json",
dataType: "json",
data: ko.toJSON(data)
});
};
ここでは、AJAX Deferred オブジェクトを返すだけです。応答は別のオブジェクトによって処理されます。
api.post(menuItemsUri, self.newItem)
.done(function (data, textStatus, request) {
console.log(request.getResponseHeader("Location")); // undefined
})
.always(function () {
// reset the current item
self.newItem.update({});
});
サーバーは Response を返し201 Created
、Location ヘッダーを設定します。これは Chrome の [ネットワーク] タブで確認できます。
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:0
Date:Thu, 07 Feb 2013 10:25:04 GMT
Expires:-1
Location:http://localhost:49978/sites/1/menus/65/items/19
Pragma:no-cache
XmlHttpRequest
ただし、 jQuery AJAX コールバックで渡されたオブジェクトには Location ヘッダーがありません。