I am attempting to learn AJAX, but it is not going so well. On my site users can request training. Once the request is submitted instructors should be able to manage the request from this page. However when trying to "claim" a request, the AJAX does not function correctly, with no errors.
- The inner html does not change
- The database entry is not changed
- I know the php file is being run as I had previously received errors
PHP/HTML/Javascript/AJAX
<table class="sidebar" style="width:50%;">
<tr><th>My Open Requests</th></tr>
<div id="myopen">
<?php
if(!empty($myopen)){
foreach($myopen as $request){
$date = date('F d Y - gA', $request['submitted']);
echo '<tr><td>'.$request['vid'].' - '.$request['type'].' - '.$request['comments'].' - '.$date.'</td></tr>';
}
}
else{
echo '<tr><td>NONE</td></tr>';
}
?>
</div>
</table>
<table class="sidebar" style="width:50%;">
<tr><th>My Closed Requests</th></tr>
<?php
if(!empty($myclosed)){
foreach($myclosed as $request){
$date = date('F d Y - gA', $request['submitted']);
echo '<tr><td>'.$request['vid'].' - '.$request['type'].' - '.$request['comments'].' - '.$date.'</td></tr>';
}
}
else{
echo '<tr><td>NONE</td></tr>';
}
?>
</table>
<table class="sidebar" style="width:50%;">
<tr><th>Unclaimed Requests</th></tr>
<div id="unclaimed">
<?php
if(!empty($unclaimed)){
foreach($unclaimed as $request){
$date = date('F d Y - gA', $request['submitted']);
$id = $request['id'];
$name = "'".$this->registry->getData('firstname').' '.$this->registry->getData('lastname')."'";
echo '<tr><td>'.$request['vid'].' - '.$request['type'].' - '.$request['comments'].' - '.$date.' <a href="" onclick="claim('.$id.','.$name.')">Claim</a></td></tr>';
}
}
else{
echo '<tr><td>NONE :)</td></tr>';
}
?>
</div>
</table>
<table class="sidebar" style="width:50%;">
<tr><th>Request Log</th></tr>
<?php
if(!empty($claimed)){
foreach($claimed as $request){
echo '<tr><td>'.print_r($request).'</td></tr>';
}
}
else{
echo '<tr><td>NONE</td></tr>';
}
?>
</table>
<script>
function claim(id, name){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("myopen").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("POST", "/lib/AJAX/trainingRequestManage.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("id="+id+"&name="+name);
}
</script>
trainingRequestManage.php
<?php
$id = $_POST["id"];
$id = $_POST["name"];
include('http://www.ivaoxa.org/config/db.php');
$sql = "UPDATE trainingRequests SET trainer='".$name."' WHERE id=".$id;
// Prepare statement
$stmt = $db->prepare($sql);
// execute the query
$stmt->execute();
echo 'test';
db.php
<?php
$db = new PDO('mysql:host=localhost;dbname=xx;charset=utf8', 'xx', 'xx');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);