[英]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.