我想清理一些遺留代碼。
以下是切,做Ajax請求的代碼的主要部分的下降:
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
$j.prompt("Your browser does not support AJAX!");
return;
}
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
// Get the data from the server's response
// returns json data
//i know, don't ask
eval(xmlHttp.responseText);
// doing stuff with the json data
...
etc
}
}
xmlHttp.open("POST","fetchData.php",true);
//sample data passed
var request ="51.5&-0.12";
xmlHttp.send(request);
我試圖轉換爲:
$j.ajax({
type: "POST",
url: "fetchData.php",
success: function(data) {
mapFn._showSidebarHotels(data);
},
cache: false,
data: "51.5&-0.12",
dataType: "json",
processData: false
})
遺留代碼填充$ HTTP_RAW_POST_DATA var傳統後端代碼(我不願意更改)使用的var。
當使用jquery調用時,$ HTTP_RAW_POST_DATA似乎沒有被填充,奇怪的是$ _POST []似乎是空以及。
我注意到在比較兩個ajax調用時,螢火蟲的POST選項卡的區別在於,jquery版本具有「application/x-www-form-urlencoded」作爲進一步信息,因爲傳統調用不適用。
我認爲問題歸結爲使用jquery ajax請求發送的頭的類型,但我不知道我可以進一步使用jQuery來操作這些頭。
我的問題是:
- 是我的jQuery通話兩不誤?鑑於我有一個空的$ POST數組
- 如何使用jQuery的參數填充$ HTTP_RAW_POST_DATA?
我上面已經設置了「processData:false」。還有什麼想法? – thiswayup
我在Ajax請求2個按鍵: 的contentType: '文本/ XML', 類型: 'POST' 有了這些,我可以閱讀使用 在PHP中的內容,如果( 'POST' == $列舉HTTPMethod) {$ body = file_get_contents(「php:// input」); $ body = $ HTTP_RAW_POST_DATA; } 爲了讓HTTP_RAW_POST_DATA工作,我啓用了php.ini設置 always_populate_raw_post_data = On – user906825