我一直在尝试获得一个独立的网页,我使用它重建为可以在我的博客中访问的页面。根据建议,我为这个页面创建了一个新模板,并在那里完成了我的所有工作。
页面正确地记住了$_会话,php运行良好。在此页面上有下拉框,用于更新其他下拉框。
如果我手动更新,一切都会很好。当我尝试引入我的ajax调用时,事情变得不稳定。目前正在更新。php只是回应“你好”。
<script>
function changeFn( ) {
var newOpt = document.createElement(\'option\');
var oldSel = document.getElementById(\'slight\');
while ( oldSel.length > 0 )
oldSel.remove(oldSel.options.length-1);
var ajaxRequest;
alert("start req"); // I observe this alert
try {
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e) {
try {
// Internet Explorer Browsers
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
// Something went wrong
alert("Your browser isn\'t supporting XML HTTP requests.");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function () {
alert("state change: "+ajaxRequest.readyState); // I never observe this
if (ajaxRequest.readyState == 4) {
if (ajaxRequest.status == 200) {
alert(ajaxRequest.responseText);
//extract( ajaxRequest.responseText, "one" );
} else {
alert("There was an error retriving the data");
}
}
}
alert("trying"); // I observe this alert
var url = "http://myurl/update.php";
var params = "CID="+classID+"&GID="+genreID;
ajaxRequest.open("POST", url, true);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxRequest.setRequestHeader("Content-length", params.length);
ajaxRequest.setRequestHeader("Connection", "close");
ajaxRequest.send(params);
alert(" hi"); // I never see this alert
newOpt.text="got this far";
newOpt.value= -1;
document.getElementById("slight").add(newOpt, null);
return true;
}
</script>
一些警报会触发,但与回调函数关联的警报不会触发。PS我并没有试图访问任何特定于wordpress网站本身的内容,我正在访问一个完全不同的数据库。
SO网友:Stephen
根据Ralf912的评论,我试图找出Chrome中的控制台和devtools是关于什么的。这个调试器清楚地说明了我的脚本有什么问题,这不是Wordpress特有的问题,但如果其他人认为有问题,我会解释。
可能是Wordpress设置了一个比我用于测试的其他纯html环境更严格的环境,这就是为什么会出现这些错误并停止工作的原因。
首先:
在编辑过程中,我从函数调用中删除了参数,这意味着参数中的项目没有定义。
第二:这些线路造成了安全违规,删除这两条线路时没有人抱怨(基于另一个用户关于stackoverflow的问题)。ajaxRequest。setRequestHeader(“内容长度”,参数长度);ajaxRequest。setRequestHeader(“连接”,“关闭”);
最后:url变量包括http://这使脚本认为它在我自己的域之外重定向,需要重写为只指向本地路径。
这三个项目的组合只有在我开始使用控制台后才清楚,解决后允许我的脚本在Wordpress环境中正确运行。