Source for file index.php
Documentation is available at index.php
* Almost real life example, show a list reviews, letting you add one, and then updating the list
* @author Joshua Eichorn <josh@bluga.net>
* @copyright 2005 Joshua Eichorn
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version Release: @package_version@
* @link http://pear.php.net/package/HTML_AJAX
// include the helper class
require_once 'HTML/AJAX/Helper.php';
// create an instance and set the server url
$ajaxHelper->serverUrl = 'auto_server.php';
$ajaxHelper->jsLibraries [] = 'JSON'; // not included in the default list before 0.2.6
// output a javascript neded to setup HTML_AJAX
// by default this is all the libraries shipped with HTML_AJAX, take a look at $ajaxHelper->jsLibraries to edit the list
echo $ajaxHelper->setupAJAX ();
// ajax helper should do this for you but it doesn't yet
<script type="text/javascript" src="auto_server.php?stub=review"></script>
<script type="text/javascript">
// after a review we get a chunk of html that we can update the reviewList with
newReview: function(result) {
document.getElementById('reviewList').innerHTML += result;
// after a review is updated we get a chunk of html, replace a node from our lookup list with that
updateReview: function(result) {
var newdiv = document.createElement('div');
newdiv.innerHTML = result[1];
document.getElementById('reviewList').replaceChild(newdiv.firstChild,reviewCallback.nodeList[result[0]]);
function sendReview(form) {
var remoteReview = new Review(reviewCallback);
var payload = new Object();
for(var i = 0; i < form.elements.length; i++) {
if (form.elements[i].name) {
payload[form.elements[i].name] = form.elements[i].value;
// do any needed validation here
remoteReview.newReview(payload);
function updateReview(id,form) {
var remoteReview = new Review(reviewCallback);
var payload = new Object();
for(var i = 0; i < form.elements.length; i++) {
if (form.elements[i].name) {
payload[form.elements[i].name] = form.elements[i].value;
// do any needed validation here
remoteReview.updateReview(id,payload);
function editReview(id,node) {
var form = document.getElementById('reviewForm').cloneNode(true);
form.onsubmit = function() { updateReview(id,this); return false; }
var divs = node.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++) {
data[divs[i].className] = divs[i].innerHTML;
for(var i = 0; i < form.elements.length; i++) {
if (form.elements[i].name) {
form.elements[i].value = data[form.elements[i].name];
document.getElementById('reviewList').replaceChild(form,node);
reviewCallback.nodeList[id] = form;
<h2>Add a new Review</h2>
<form id="reviewForm" onsubmit="sendReview(this); return false;" style="border: dotted 1px black">
Your Name: <input name="name"><br>
Your Review: <textarea name="review"></textarea><br>
if (isset ($_SESSION['reviews'])) {
foreach($_SESSION['reviews'] as $key => $review) {
echo " <div onclick='editReview($key,this)'><div class='name'>$review->name</div><div class='review'>$review->review</div></div>\n";
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
Documentation generated on Sat, 05 May 2007 18:00:15 -0400 by phpDocumentor 1.3.0. PEAR Logo Copyright © PHP Group 2004.
|