2013-04-24 120 views
0

即时通过使用javascript ajax请求和php编写脚本.. 我做了一个ajax调用来验证用户是否被识别,并根据“响应”我想让第二个Ajax请求要么让他要么做他的选择,如果他已经是一个注册用户,或者对我的PHP侧显示已提交选择xmlhttp.responseText在第二个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(); 
} 

我在的情况下,他被认为是这些线路

,但如果他不承认我已经将这个检查

if (!isset($_GET['option1'])){ //option1 is one of the parameters i pass through "string" 
    echo "nodata"; 
    } 

只有字符串设定为“”

q="+str+string 

,而在第二次调用字符串设定为通过第一个电话是由option1 = A & option2 = B等etc ...

问题是,我试图提醒xmlhttpresponse检查响应是否已被改变,但resposne仍然是相同的..例如,如果他是如果我刷新页面并且他被识别,我会得到document.getElementById('“。$ row ['option1']。”')。className + ='colour1 “;响应..

我需要这样做的原因是因为我想这部分

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

,如果他被识别为仅执行..

+0

这种做法似乎过于复杂,除了是通过PHP真的笨重[呼应js代码?为什么?]。只需将您的资源放在授权防火墙[即使是基本的HTTP身份验证作为开始]后,然后根据响应代码进行选择:您会发现[此阅读](http://symfony.com/doc/2.1/book/ security.html)很有用,而[this one](http://tomayko.com/writings/rest-to-my-wife)也是如此。 – moonwave99 2013-04-24 11:41:01

+0

我通过php回应js,因为我希望根据数据库的输出,即时通讯运行查询,对用户选择的样式执行一些更改..但代码的部分超出了范围,所以我没有包括它.. – nikolas 2013-04-24 11:52:15

回答

0

考虑moonwave99的意见后为好,我结束了不同的解决方案..

首先我发现的,该条件检查失败,因为在这个responseText有一个额外的白色space..so最初我用

xmlhttp.responseText.trim(); 

为了删除不需要的字符......但它仍然不觉得正确的事实,我是从PHP传回js代码作为字符串回到js ..我决定使用json .. so on 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'; 
    } 
相关问题