Php 第二个ajax请求后的xmlhttp.responseText

Php 第二个ajax请求后的xmlhttp.responseText,php,javascript,ajax,ajax-request,Php,Javascript,Ajax,Ajax Request,我正在使用javascript ajax请求和php编写脚本。。 我通过一个ajax调用来验证用户是否被识别,根据“响应”,我想发出第二个ajax请求,如果他已经是注册用户,则允许他做出选择,或者显示已经提交的选择 xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var script = document.createEl

我正在使用javascript ajax请求和php编写脚本。。 我通过一个ajax调用来验证用户是否被识别,根据“响应”,我想发出第二个ajax请求,如果他已经是注册用户,则允许他做出选择,或者显示已经提交的选择

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    var script = document.createElement('script');
        script.innerHTML = xmlhttp.responseText;
        document.getElementsByTagName('head')[0].appendChild(script);
        removeOnclick();
        //document.getElementById("txtHint").innerHTML=
    }
  }
xmlhttp.open("GET","submit_votes.php?q="+str+string,true);
xmlhttp.send();
}
在我的php方面

我有这些台词以防他被认出来

if (mysqli_num_rows($result) > 0) {

while($row = mysqli_fetch_array($result))
  {
    echo "document.getElementById('".$row['option1']."').className += ' colour1';";
    ....
}
但如果他不被认出来,我就开这张支票

if (!isset($_GET['option1'])){ //option1 is one of the parameters i pass through "string"
    echo "nodata";
    }
第一次调用仅传递设置的字符串“”

在第二次呼叫时,字符串设置为option1=A&option2=B等

问题是,我试图提醒xmlhttpresponse检查响应是否已更改,但响应保持不变。例如,如果他未被识别,我将在两个响应中都输入“nodata”,而如果我刷新页面并识别出他,我将获得文档。getElementById(“$row['option1']”)。className+='color1';答复

我之所以需要这个是因为我想要这个零件

    var script = document.createElement('script');
        script.innerHTML = xmlhttp.responseText;
        document.getElementsByTagName('head')[0].appendChild(script);
        removeOnclick();
        //document.getElementById("txtHint").innerHTML=

只有在他被认出来的情况下才能被处决在考虑了moonwave99的评论之后,我最终得到了一个不同的解决方案

首先我发现,条件检查失败了,因为在responseText中有一个额外的空格..所以最初我使用

xmlhttp.responseText.trim();
为了删除不需要的字符…但我把js代码作为字符串从php传递回js的事实仍然让人感觉不对劲。。我决定使用json。。 在php方面,我使用了json编码

$options = array($row['option1'],$row['option2'],$row['option3'],$row['option4'],$row['option5'],$row['option6'],
                    $row['option7'],
                    $row['option8'],
                    $row['option9'],
                    $row['option10']
                    );
echo json_encode($options);
在javascript方面,我使用了

    var jsObject = JSON.parse(xmlhttp.responseText);
    var jslength = jsObject.length;
    for (i=0; i<jslength; i++){
        document.getElementById(jsObject[i]).className += ' colour';
    }
var jsObject=JSON.parse(xmlhttp.responseText);
var jslength=jsObject.length;

对于(i=0;它的方法似乎过于复杂,除了非常笨重[通过php重复js代码?为什么?)。只需将您的资源放在授权防火墙后面[甚至作为一个开始的基本HTTP身份验证],然后根据响应代码进行选择:您会发现有用,而且。我通过php回送js,因为我想根据运行查询的db的输出,对用户选择的样式进行一些更改。但是,这部分代码超出了范围,所以我没有包含它。。
    var jsObject = JSON.parse(xmlhttp.responseText);
    var jslength = jsObject.length;
    for (i=0; i<jslength; i++){
        document.getElementById(jsObject[i]).className += ' colour';
    }