Here's a working example. You should add some error checking to the JS, and security to the PHP.
Note, the url in makeRequest(url) must be local, not a http:// address to some other server.
test.html
<html><head>
<script language="javascript"><!--
///////////////////////////////////////
// basic AJAX functions ///////////////
// Adapted from: http://developer.mozilla.org/en/docs/AJAX:Getting_Started
///////////////////////////////////////
var http_request = false;
function makeRequest(url) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try { http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try { http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (http_request) {
http_request.onreadystatechange = handleResponse;
http_request.open('GET', url, true);
http_request.send(null);
} else {
alert('Error in makeRequest, cannot create an XMLHTTP instance');
}
}
// browser fires this periodically until readyState == 4
function handleResponse() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
use_ajax_response(http_request.responseText);
} else {
alert('Error in handleRepsonse, readyState==4');
}
} // ignore other firings
}
///////////////////////////////////////
///// end basic AJAX functions
///////////////////////////////////////
///////////// test: /////////////////////
var testi= 0;
function use_ajax_response(st) {
// alert('AJAX says: ' + st);
if (st.substring(0,6)=='delete') {
// alert('deleting row: ' + st.substring(6));
delrow('tt', st.substring(6));
} else {
addrow('tt', st);
}
}
////////////////////////////////////////////////////////////////
/// DOM stuff, see http://www.quirksmode.org/dom/intro.html
////////////////////////////////////////////////////////////////
function addrow(tbid, st) {
var tb= document.getElementById(tbid);
var tr= document.createElement('TR');
testi++;
tr.id= 'tr' + testi;
tb.appendChild(tr);
var td= document.createElement('TD');
tr.appendChild(td);
td.innerHTML= 'AJAX: tr' + testi;
var td2= document.createElement('TD');
tr.appendChild(td2);
td2.innerHTML= st;
}
function delrow(tbid, trid) {
var tb= document.getElementById(tbid);
var tr= document.getElementById(trid);
tb.removeChild(tr);
}
/////////////////////////////////////////
// --></script>
</head><body>
<ul>
<li>
<a href="#" onClick="makeRequest('test.php?x=kitty'); return false;">add kitty</a>
<li>
<a href="#" onClick="makeRequest('test.php?x=cat'); return false;">add cat</a>
<li>
<a href="#" onClick="makeRequest('test.php?x=tr2&delete=1'); return false;">delete tr2</a>
<li>
<a href="#" onClick="makeRequest('test.php?x=tr3&delete=2'); return false;">delete tr3</a>
</ul>
<table border="1">
<tbody id="tt">
<tr><td>START</td><td>sample</td></tr>
</tbody>
</table>
</body></html>
test.php
<?php
// add securty before using
$x= $_REQUEST['x'];
if (!empty($_REQUEST['delete'])) {
print "delete$x";
exit; // no extra text
}
print "You sent x=$x at " . date('r');
?>