[英]how to get Jquery to send POST data to populate $HTTP_RAW_POST_DATA var in PHP?
我正在嘗試整理一些舊代碼。
以下是執行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,遺留后端代碼(我不希望更改)使用該變量。
使用jquery調用時,似乎沒有填充$ HTTP_RAW_POST_DATA,並且奇怪的是$ _POST []也似乎為空 。
我注意到,在比較兩個ajax調用時,firebug的POST選項卡中的差異在於,jQuery版本具有“ application / x-www-form-urlencoded”作為進一步的信息,而傳統調用則沒有。
我相信問題歸結於與jquery ajax請求一起發送的標頭的類型,但是我不確定如何進一步使用jquery操作這些標頭。
我的問題是:
數據在發送前被轉換成查詢字符串。 可以通過將processData設置為false來避免此處理。
例:
將xml文檔作為數據發送到服務器。 通過將processData選項設置為false,可以防止將數據自動轉換為字符串。
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: handleResponse
});
那么,您是否嘗試過更改內容類型? 也許將其設置為一個空字符串(正如您所說的舊調用未提供內容類型)?
我在服務器期望原始發布數據為JSON時遇到了類似的問題。 將內容類型更改為“ application / json”后,它可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.