我正在做一个简单的 Ajax 调用,该调用在 ASP.NET 中工作,但是当您在 onreadystatechange 函数中放置断点时,由于一些奇怪的 DOM 异常而失败。例如,当您在 Google Chrome 中查看 xmlhttp 变量时,ASP.NET 正在做的额外的标头魔术是什么,而 PHP 没有做到这一点,导致 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 页面传入的数据是这样的:[root][Vars][windows]
我是故意这样做的 [ 而不是 < 所以请不要指出这一点,它再次适用于 ASP.NET 页面,但不适用于 PHP 页面。返回的数据与我检查过的服务器端相同。那么,如果任何 ASP.NET 做到了 PHP 没有做到,那么缺少的标头魔法是什么。