Documentation
Introduction
$.ahm() is a wrapper around $.ajax() that allows back-end code to harness the power of jQuery.
Setup
Load jquery-ahm.js:
<script type='http://jqueryahm.com/js/jquery-ahm.js'></script>
Add "ahm" class:
link
Back-end response code:
<?php // ahm.php echo json_encode(array( // the same as alert('hello world'); '/alert' => 'hello world!' )); ?>
Response Format
<?php $response = array( "$selector/$callback" => "$params", // eg, for $('#bark').append('woof!
') "#bark/append" => "woof!
" ); // echo response in json echo json_encode($response); ?>
$response
$response must be a JSON encoded associative array. Key-value pairs will be executed in the the same order as returned.
$selector
$selector is a jQuery selector and is optional. All jQuery selectors are supported.
$callback
This is the callback function. jQuery functions and plugins take precedence over global and user-defined JavaScript functions.
$params
$params can be a string, array or associative array. If $params is a string or an associative array, it will simply be passed into the callback function. If $params is an array, it will be passed into the callback as separate arguments.
<?php $response = array( // pass value: $('p').fadeIn('slow') 'p/fadeIn' => 'slow', // pass map: $('p').css({ backgroundColor: 'yellow', border: '1px solid red' }) 'p/css' => array('backgroundColor'=>'yellow', 'border'=>'1px solid red'), // pass as arguments: $('p').css('color', 'blue') 'p/css' => array('color', 'blue') ); ?>
Moreover, $params can contain a callback function:
<?php $response = array( // $('#remove').fadeOut('slow', function() { // $(this).remove(); // }); '#remove/fadeOut' => array('slow', 'function() { $(this).remove(); }') ); ?>
More Examples
<?php $response = array( // advance jquery selector: $('ul > li:first').addClass('top') 'ul > li:first/addClass' => 'top', // call global javascript function: alert('hello world') '/alert' => 'hello world', // call jquery plugin: $.colorbox({html:'hello world'}) '/colorbox' => array('html'=>'hello world'), // chain callbacks together: $("#animate").fadeOut("slow").delay("1000").slideDown("fast") "#animate/fadeOut" => "slow", "#animate/delay" => "1000", "#animate/slideDown" => "fast", ); ?>