2013-04-27 66 views
1

嗨,我有麻烦使这个Ajax代码与JavaScript的工作。该函数被称为studentReqHandler,带有一个按钮onclick函数,一切都在echo中。这是函数studentReqHandler的代码:Ajax代码无响应

echo "<script type='text/javascript'> 
function studentReqHandler(action,id,email,elem){ 

_(elem).innerHTML = 'processing ...'; 
var ajax = ajaxObj('POST', 'verifying.php'); 
ajax.onreadystatechange = function() { 
    if(ajaxReturn(ajax) == true) { 
     if(ajax.responseText == 'accept_ok'){ 
      _(elem).innerHTML = '<b>User Verified!</b><br />'; 
     } else { 
      _(elem).innerHTML = ajax.responseText; 
     } 
    } 
} 
ajax.send('action='+action+'&id='+id+'&email='+email); 
} 
</script> 

这是的onclick按钮:

<button onclick='studentReqHandler(\"accept\",\"".$id."\",\"".$email."\",\"user_info_".$id."\")'>accept</button> or 

“;

其他Ajax相关的功能:

function ajaxObj(meth, url) { 
var x = new XMLHttpRequest(); 
x.open(meth, url, true); 
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
return x; 
      } 
    function ajaxReturn(x){ 
if(x.readyState == 4 && x.status == 200){ 
    return true;  
} 
     } 

和持续的PHP的这个工作:

if (isset($_POST['action']) && isset($_POST['id'])&& isset($_POST['email'])){ 
$id = preg_replace('#[^0-9]#', '', $_POST['id']); 
$email = $_POST['email']; 


if($_POST['action'] == "accept"){ 

    $sql = "UPDATE profile SET verified='1' WHERE id='$id' AND email='$email' LIMIT 1"; 
    $query = mysqli_query($db_conx, $sql); 
     mysqli_close($db_conx); 

     echo "accept_ok"; 
     exit(); 
    } 

    } 

谁能弄清楚为什么不工作?

+0

始终消毒用户输入!! http://bobby-tables.com/php.html – edwardmp 2013-04-27 00:58:00

+0

你使用的是萤火虫/开发者工具吗?什么不起作用? PHP返回错误?你有没有检查你的日志?你是否收到客户端错误? – dm03514 2013-04-27 01:02:35

+0

一切,现在的情况是该元素的变化accept_ok。 php不会返回accept_ok – 2013-04-27 01:32:57

回答

0

我粘贴此代码,它的工作原理:

误差最小,是你有在<按钮有些凌乱报价> JavaScript字符串。

<?php 
/* using this at the top to check what happens when it posts. */ 

if (isset($_POST['action']) && isset($_POST['id'])&& isset($_POST['email'])){ 
    $id = preg_replace('#[^0-9]#', '', $_POST['id']); 
    $email = $_POST['email']; 


    if($_POST['action'] == "accept"){ 

    /* I commented out the query, so you must make sure that works right */  
    $sql = "UPDATE profile SET verified='1' WHERE id='$id' AND email='$email' LIMIT 1"; 
    //$query = mysqli_query($db_conx, $sql); 
    // mysqli_close($db_conx); 

     echo "accept_ok"; 
     exit(); 
    } 

} 

/* some default values. You need to make sure you get these from somewhere.*/ 
$id=3; 
$email="[email protected]"; 

/* ELEMENT changes when I click the button */ 
echo "Div Element <div id='element'>ELEMENT</div> area<br><br>"; 
?> 
<script type='text/javascript'> 
function studentReqHandler(action,id,email,elem) { 

    /* I used the basic document element locator */ 
    document.getElementById('element').innerHTML = 'processing ...'; 

    /* I posted to itself this time. */ 
    var ajax = ajaxObj('POST', 'ajax.php'); 
    ajax.onreadystatechange = function() { 
     if(ajaxReturn(ajax) == true) { 
      if(ajax.responseText == 'accept_ok'){ 
       document.getElementById('element').innerHTML = '<b>User Verified!</b><br />'; 
      } else { 
       document.getElementById('element').innerHTML = ajax.responseText; 
      } 
     } 
    } 
    ajax.send('action='+action+'&id='+id+'&email='+email); 
} 

function ajaxObj(meth, url) { 
    var x = new XMLHttpRequest(); 
    x.open(meth, url, true); 
    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    return x; 
} 

function ajaxReturn(x){ 
    if(x.readyState == 4 && x.status == 200){ 
     return true;  
    } 
} 


</script> 

/* There were too many quotes and \'s in the original button. */ 
<br>The Button<br> 
<?php 
    echo "<button onclick=\"studentReqHandler('accept','$id','$email','user_info_$id') \">accept</button>"; 
?>