我想做一個POST到REST服務。當使用標準的XMLHttpRequest方式時,它可以工作,但是當使用jQuery $ .ajax時,HTTPRequest頭部會變得混亂,POST變成OPTIONS。
我是新來的jQuery和HTTP,所以我可能會錯過一些東西明顯:)
這工作:
function sendPostXMLHTTP() {
var jData = { "Name": "Olle" };
var client = new XMLHttpRequest();
client.open("POST", "http://localhost:8383/DEMOService/TestPost");
client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
client.send(JSON.stringify(jData));
}
這不起作用:
function sendPostAjax() {
var jData = { "Name": "Olle" };
$.ajax({
type: 'POST',
url: 'http://localhost:8383/DEMOService/TestPost',
contentType: "text/plain;charset=UTF-8",
data: JSON.stringify(jData)
});
}
的HTTPRequest產生來自sendPostXMLHTTP()(正確):
POST http://localhost:8383/DEMOService/TestPost HTTP/1.1
Host: localhost:8383
Connection: keep-alive
Content-Length: 15
Origin: http://localhost:9990
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Content-Type: text/plain;charset=UTF-8
Accept: */*
Referer: http://localhost:9990/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
{"Name":"Olle"}
的HTTPRequest從sendPostAjax()不正確產生:
OPTIONS http://localhost:8383/DEMOService/TestPost HTTP/1.1
Host: localhost:8383
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://localhost:9990
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Access-Control-Request-Headers: Origin, X-Requested-With, Content-Type, Accept
Accept: */*
Referer: http://localhost:9990/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
爲什麼會出現 「jQuery的$就」 三通轉POST到一個選項,爲什麼請求主體dissapear?
//帕特里克
您是否在同一頁(並因此來源)上運行兩組代碼? OPTIONS請求表明您正在啓動CORS的預檢檢查。 – Quentin 2012-03-14 10:11:54
你使用的是什麼版本的jQuery?我記得我不得不關閉一些觸發預檢的非標準頭文件,就像@Quentin建議的那樣。不知道他們是否解決了這個問題,你需要讓溝通結束。我有一個開放的問題> [這裏](http://stackoverflow.com/questions/3290068/please-help-test-a-cors-issue-in-firefox-jquery-ajax-when-401)<聞起來同樣的 – mplungjan 2012-03-14 10:15:44