我終於解決了這個問題。
第一個問題是CORS限制的一部分。在大多數情況下,將「Access-Control-Allow-Origin」設置爲「*」就足夠了。但在這種情況下(發佈JSON正文),需要一些額外的頭文件。這裏是設置所有這些的Java代碼:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "origin, content-type, accept");
response.setHeader("Access-Control-Allow-Credentials", "true");
問題的另一部分是AJAX請求。這裏是工作代碼:
var post_data = JSON.stringify({foo: "BAR"});
$.ajax({
success: function(data) {
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown){
alert("error while making ajax call. Error parameters are, " +
"\ntextStatus: " + textStatus +
";\n errorThrown: " + errorThrown +
";\n jqXHR: " + JSON.stringify(jqXHR));
},
url: ajax_url,
data: post_data,
contentType: 'test/json',
type: "POST"
});
P.S. #1所提供的代碼已經過Firefox,Chrome和Internet Explorer瀏覽器的測試,並且工作正常。 P.S. #2 java代碼的最佳位置在過濾器中。
它應該是'data:{}'(不含引號)。它是一個對象,而不是一個字符串。 – putvande
如果我沒有引用它,身體發送到服務器是空的。我需要傳遞真實數據,「{}」只是一種避免默認轉義的測試。任何其他想法? – joro
開發者控制檯爲發送和接收的數據提供了什麼內容? – atmd