Ajax调用在PHP中失败,在ASP.NET中运行良好

Ajax调用在PHP中失败,在ASP.NET中运行良好,php,javascript,asp.net,ajax,Php,Javascript,Asp.net,Ajax,我正在做一个简单的Ajax调用,该调用在ASP.NET中运行,但在onreadystatechange函数中设置断点时,由于一些奇怪的DOM异常而失败。例如,当您查看Google Chrome中的xmlhttp变量时,PHP没有做的额外标题magic ASP.NET做了什么,导致PHP的responseText为空,只有DOM例外 var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera,

我正在做一个简单的Ajax调用,该调用在ASP.NET中运行,但在onreadystatechange函数中设置断点时,由于一些奇怪的DOM异常而失败。例如,当您查看Google Chrome中的xmlhttp变量时,PHP没有做的额外标题magic ASP.NET做了什么,导致PHP的responseText为空,只有DOM例外

var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        //Here is where you unwrap the data
        var arr = UnWrapVars(xmlhttp.responseText);
        if (callBackFunc) {
            callBackFunc(arr);
        }
    }
};
xmlhttp.open("POST", ajaxURL, true);
if (navigator.userAgent.toLowerCase().indexOf('msie') == -1) {
    xmlhttp.overrideMimeType("application/octet-stream");
}
xmlhttp.send("[FunctionName]" + functionName + "[/FunctionName][CanvasID]" + canvasid + "[/CanvasID][WindowID]" + windowid.toString() + "[/WindowID][Vars]" + getEncodedVariables() + "[/Vars]");
来自Ajax页面的传入数据如下所示: [根][变量][窗口]


我是故意这样做的[而且不是<所以请不要一再指出它是从ASP.NET页面工作的,而不是从PHP页面工作的。返回的数据与我在服务器端检查的数据相同。那么,如果任何ASP.NET做了PHP没有做的事情,那么缺少的头魔法是什么呢。

这是因为
$\u POST
实际上是访问通过gh表单。它需要适当的标题。请将此行放在
xmlhttp.send()前面:

这将迫使PHP填充
$\u POST
数组

或者,您可以创建一个
请求
实例,作为
php://input
stream。那么您的XHR调用就不需要发送额外的头

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");