我的页面上未显示AJAX Ready状态更改

时间:2013-05-12 作者:Stephen

我一直在尝试获得一个独立的网页,我使用它重建为可以在我的博客中访问的页面。根据建议,我为这个页面创建了一个新模板,并在那里完成了我的所有工作。

页面正确地记住了$_会话,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+"&amp;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网站本身的内容,我正在访问一个完全不同的数据库。

1 个回复
SO网友:Stephen

根据Ralf912的评论,我试图找出Chrome中的控制台和devtools是关于什么的。这个调试器清楚地说明了我的脚本有什么问题,这不是Wordpress特有的问题,但如果其他人认为有问题,我会解释。

可能是Wordpress设置了一个比我用于测试的其他纯html环境更严格的环境,这就是为什么会出现这些错误并停止工作的原因。

首先:
在编辑过程中,我从函数调用中删除了参数,这意味着参数中的项目没有定义。

第二:这些线路造成了安全违规,删除这两条线路时没有人抱怨(基于另一个用户关于stackoverflow的问题)。ajaxRequest。setRequestHeader(“内容长度”,参数长度);ajaxRequest。setRequestHeader(“连接”,“关闭”);

最后:url变量包括http://这使脚本认为它在我自己的域之外重定向,需要重写为只指向本地路径。

这三个项目的组合只有在我开始使用控制台后才清楚,解决后允许我的脚本在Wordpress环境中正确运行。

结束

相关推荐

如何使用AJAX按税种过滤帖子

我发现this post 这描述了如何使用Ajax过滤分类帖子,效果很好,但我也想以同样的方式过滤我的自定义分类法,但我无法让它正常工作。它显示了所有帖子,而不仅仅是分类法中的帖子。我知道菜单需要改成get_the_terms 而不是get_the_categories 但是我特别需要关于jQuery函数和底部php函数的更改的帮助。我尝试添加tax_query 调用我的分类法,但它仍然没有显示正确的帖子。有人能帮我指出正确的方向吗?