Php 第二个ajax请求后的xmlhttp.responseText
我正在使用javascript ajax请求和php编写脚本。。 我通过一个ajax调用来验证用户是否被识别,根据“响应”,我想发出第二个ajax请求,如果他已经是注册用户,则允许他做出选择,或者显示已经提交的选择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
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';
}