⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajax.php.svn-base

📁 j2me is based on j2mepolish, client & server for mobile application. server part
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
<?php/* SVN FILE: $Id: ajax.php 4050 2006-12-02 03:49:35Z phpnut $ *//** * Helper for AJAX operations. * * Helps doing AJAX using the Prototype library. * * PHP versions 4 and 5 * * CakePHP :  Rapid Development Framework <http://www.cakephp.org/> * Copyright (c)	2006, Cake Software Foundation, Inc. *								1785 E. Sahara Avenue, Suite 490-204 *								Las Vegas, Nevada 89104 * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @filesource * @copyright		Copyright (c) 2006, Cake Software Foundation, Inc. * @link				http://www.cakefoundation.org/projects/info/cakephp CakePHP Project * @package			cake * @subpackage		cake.cake.libs.view.helpers * @since			CakePHP v 0.10.0.1076 * @version			$Revision: 4050 $ * @modifiedby		$LastChangedBy: phpnut $ * @lastmodified	$Date: 2006-12-01 21:49:35 -0600 (Fri, 01 Dec 2006) $ * @license			http://www.opensource.org/licenses/mit-license.php The MIT License *//** * AjaxHelper library. * * Helps doing AJAX using the Prototype library. * * @package		cake * @subpackage	cake.cake.libs.view.helpers */class AjaxHelper extends Helper {/** * Included helpers. * * @var array * @access public */	var $helpers = array('Html', 'Javascript');/** * Names of Javascript callback functions. * * @var array * @access public */	var $callbacks = array('uninitialized', 'loading', 'loaded', 'interactive', 'complete', 'success', 'failure');/** * Names of AJAX options. * * @var array * @access public */	var $ajaxOptions = array('type', 'confirm', 'condition', 'before', 'after', 'fallback', 'update', 'loading', 'loaded', 'interactive', 'complete', 'with', 'url', 'method', 'position', 'form', 'parameters', 'evalScripts', 'asynchronous', 'onComplete', 'onUninitialized', 'onLoading', 'onLoaded', 'onInteractive', 'success', 'failure', 'onSuccess', 'onFailure', 'insertion', 'requestHeaders');/** * Options for draggable. * * @var array * @access public */	var $dragOptions = array('handle', 'revert', 'constraint', 'change', 'ghosting');/** * Options for droppable. * * @var array * @access public */	var $dropOptions = array('accept', 'containment', 'overlap', 'greedy', 'hoverclass', 'onHover', 'onDrop');/** * Options for sortable. * * @var array * @access public */	var $sortOptions = array('tag', 'only', 'overlap', 'constraint', 'containment', 'handle', 'hoverclass', 'ghosting', 'dropOnEmpty', 'onUpdate', 'onChange');/** * Options for slider. * * @var array * @access public */	var $sliderOptions = array('axis', 'increment', 'maximum', 'minimum', 'alignX', 'alignY', 'sliderValue', 'disabled', 'handleImage', 'handleDisabled', 'values', 'onSlide', 'onChange');/** * Options for in-place editor. * * @var array * @access public */	var $editorOptions = array('okText', 'cancelText', 'savingText', 'formId', 'externalControl', 'rows', 'cols', 'size', 'highlightcolor', 'highlightendcolor', 'savingClassName', 'formClassName', 'loadTextURL', 'loadingText', 'callback', 'ajaxOptions', 'clickToEditText');/** * Options for auto-complete editor. * * @var array * @access public */	var $autoCompleteOptions = array('paramName', 'tokens', 'frequency', 'minChars', 'indicator', 'updateElement', 'afterUpdateElement', 'onShow', 'onHide');/** * Output buffer for Ajax update content * * @var array * @access private */	var $__ajaxBuffer = array();/** * Returns link to remote action * * Returns a link to a remote action defined by <i>options[url]</i> * (using the urlFor format) that's called in the background using * XMLHttpRequest. The result of that request can then be inserted into a * DOM object whose id can be specified with <i>options[update]</i>. * * Examples: * <code> *  $ajax->link("Delete this post", "/posts/delete/{$post['Post']['id']}" * 				array("update" => "posts", "loading"=>"Element.show('loading');", "complete"=>"Element.hide('loading');"), *				"Are you sure you want to delte this post?"); *  $ajax->link($html->img("refresh"), '/emails/refresh', *  			array("update" => "posts", "loading"=>"Element.show('loading');", "complete"=>"Element.hide('loading');"), *				null, false); * </code> * * By default, these remote requests are processed asynchronous during * which various callbacks can be triggered (for progress indicators and * the likes). * * The callbacks that may be specified are: * * - <i>loading</i>::		Called when the remote document is being *							loaded with data by the browser. * - <i>loaded</i>::		Called when the browser has finished loading *							the remote document. * - <i>interactive</i>::	Called when the user can interact with the *							remote document, even though it has not *							finished loading. * - <i>complete</i>:: Called when the request is complete. * * If you for some reason or another need synchronous processing (that'll * block the browser while the request is happening), you can specify * <i>$options['type'] = synchronous</i>. * * You can customize further browser side call logic by passing * in Javascript code snippets via some optional parameters. In * their order of use these are: * * - <i>confirm</i> :: Adds confirmation dialog. * - <i>condition</i> :: Perform remote request conditionally *                      by this expression. Use this to *                      describe browser-side conditions when *                      request should not be initiated. * - <i>before</i> ::		Called before request is initiated. * - <i>after</i> ::		Called immediately after request was *						initiated and before <i>loading</i>. * * @link http://wiki.script.aculo.us/scriptaculous/show/Ajax.Updater * @param string $title Title of link * @param string $href href string "/products/view/12" * @param array $options Options for JavaScript function * @param string $confirm Confirmation message. Calls up a JavaScript confirm() message. * @param boolean $escapeTitle Escaping the title string to HTML entities * @return HTML code for link to remote action * @access public */	function link($title, $href = null, $options = array(), $confirm = null, $escapeTitle = true) {		if (!isset($href)) {			$href = $title;		}		if (!isset($options['url'])) {			$options['url'] = $href;		}		if (isset($confirm)) {			$options['confirm'] = $confirm;			unset($confirm);		}		$htmlOptions = $this->__getHtmlOptions($options);		if (empty($options['fallback']) || !isset($options['fallback'])) {			$options['fallback'] = $href;		}		if (!isset($htmlOptions['id'])) {			$htmlOptions['id'] = 'link' . intval(rand());		}		if (!isset($htmlOptions['onclick'])) {			$htmlOptions['onclick'] = '';		}		$htmlOptions['onclick'] .= ' return false;';		$return = $this->Html->link($title, $href, $htmlOptions, null, $escapeTitle);		$script = $this->Javascript->event("'{$htmlOptions['id']}'", "click", $this->remoteFunction($options));		if (is_string($script)) {			$return .= $script;		}		return $return;	}/** * Creates JavaScript function for remote AJAX call * * This function creates the javascript needed to make a remote call * it is primarily used as a helper for link. * * @link http://wiki.script.aculo.us/scriptaculous/show/Ajax.Updater * @see link() for docs on options parameter. * @param array $options options for javascript * @return string html code for link to remote action * @access public */	function remoteFunction($options = null) {		if (isset($options['update'])) {			if (!is_array($options['update'])) {				$func = "new Ajax.Updater('{$options['update']}',";			} else {				$func = "new Ajax.Updater(document.createElement('div'),";			}			if (!isset($options['requestHeaders'])) {				$options['requestHeaders'] = array();			}			if (is_array($options['update'])) {				$options['update'] = join(' ', $options['update']);			}			$options['requestHeaders']['X-Update'] = $options['update'];		} else {			$func = "new Ajax.Request(";		}		$func .= "'" . $this->Html->url(isset($options['url']) ? $options['url'] : "") . "'";		$func .= ", " . $this->__optionsForAjax($options) . ")";		if (isset($options['before'])) {			$func = "{$options['before']}; $func";		}		if (isset($options['after'])) {			$func = "$func; {$options['after']};";		}		if (isset($options['condition'])) {			$func = "if ({$options['condition']}) { $func; }";		}		if (isset($options['confirm'])) {			$func = "if (confirm('" . $this->Javascript->escapeString($options['confirm'])				. "')) { $func; } else { return false; }";		}		return $func;	}/** * Periodically call remote url via AJAX. * * Periodically calls the specified url (<i>options['url']</i>) every <i>options['frequency']</i> seconds (default is 10). * Usually used to update a specified div (<i>options['update']</i>) with the results of the remote call. * The options for specifying the target with url and defining callbacks is the same as link. * * @link http://wiki.script.aculo.us/scriptaculous/show/Ajax.Updater * @param array $options Callback options * @return string Javascript codeblock * @access public */	function remoteTimer($options = null) {		$frequency=(isset($options['frequency'])) ? $options['frequency'] : 10;		$code="new PeriodicalExecuter(function() {" . $this->remoteFunction($options) . "}, $frequency)";		return $this->Javascript->codeBlock($code);	}/** * Returns form tag that will submit using Ajax. * * Returns a form tag that will submit using XMLHttpRequest in the background instead of the regular * reloading POST arrangement. Even though it's using Javascript to serialize the form elements, the form submission * will work just like a regular submission as viewed by the receiving side (all elements available in params). * The options for defining callbacks is the same as link(). * * @param array $params Form target * @param array $type How form data is posted: 'get' or 'post' * @param array $options Callback/HTML options * @return string JavaScript/HTML code * @access public */	function form($params = null, $type = 'post', $options = array()) {		if (is_array($params)) {			extract($params, EXTR_OVERWRITE);			if (!isset($action)) {				$action = null;			}			if (!isset($type)) {				$type = 'post';			}			if (!isset($options)) {				$options = array();			}		} else {			$action = $params;		}		$htmlOptions = $this->__getHtmlOptions($options);		$htmlOptions['action'] = $action;		if (!isset($htmlOptions['id'])) {			$htmlOptions['id'] = 'form' . intval(rand());		}		$htmlOptions['onsubmit']="return false;";		if (!isset($options['with'])) {				$options['with'] = "Form.serialize('{$htmlOptions['id']}')";		}		$options['url']=$action;		return $this->Html->formTag($htmlOptions['action'], $type, $htmlOptions)				. $this->Javascript->event("'" . $htmlOptions['id']. "'", "submit", $this->remoteFunction($options));	}/** * Returns a button input tag that will submit using Ajax * * Returns a button input tag that will submit form using XMLHttpRequest in the background instead of regular * reloading POST arrangement. <i>options</i> argument is the same as in <i>form_remote_tag</i> * * @param string $title Input button title * @param array $options Callback options * @return string Ajaxed input button * @access public */	function submit($title = 'Submit', $options = array()) {		$htmlOptions         =$this->__getHtmlOptions($options);		$htmlOptions['value']=$title;		if (!isset($options['with'])) {				$options['with'] = 'Form.serialize(Event.element(event).form)';		}		if (!isset($htmlOptions['id'])) {				$htmlOptions['id'] = 'submit' . intval(rand());		}		$htmlOptions['onclick']="return false;";		return $this->Html->submit($title, $htmlOptions)			. $this->Javascript->event('"' . $htmlOptions['id'] . '"', 'click', $this->remoteFunction($options));	}/** * Observe field and call ajax on change. * * Observes the field with the DOM ID specified by <i>field_id</i> and makes * an Ajax when its contents have changed. * * Required +options+ are: * - <i>frequency</i>:: The frequency (in seconds) at which changes to *						this field will be detected. * - <i>url</i>::		@see urlFor() -style options for the action to call *						when the field has changed. * * Additional options are: * - <i>update</i>::	Specifies the DOM ID of the element whose *						innerHTML should be updated with the *						XMLHttpRequest response text. * - <i>with</i>:: A Javascript expression specifying the *						parameters for the XMLHttpRequest. This defaults *						to Form.Element.serialize('$field_id'), which can be *						accessed from params['form']['field_id']. * * * @see link(). * @param string $field_id DOM ID of field to observe * @param array $options ajax options * @return string ajax script * @access public */	function observeField($field_id, $options = array()) {		if (!isset($options['with'])) {			$options['with'] = "Form.Element.serialize('$field_id')";		}		return $this->Javascript->codeBlock($this->_buildObserver('Form.Element.Observer', $field_id, $options));	}/** * Observe entire form and call ajax on change. * * Like @see observeField(), but operates on an entire form identified by the * DOM ID <b>form_id</b>. <b>options</b> are the same as <b>observe_field</b>, except * the default value of the <i>with</i> option evaluates to the * serialized (request string) value of the form. * * @param string $field_id DOM ID of field to observe * @param array $options ajax options * @return string ajax script * @access public */	function observeForm($field_id, $options = array()) {		if (!isset($options['with'])) {				$options['with'] = 'Form.serialize("' . $field_id . '")';		}		return $this->Javascript->codeBlock($this->_buildObserver('Form.Observer', $field_id, $options));	}/** * Create a text field with Autocomplete. * * Creates an autocomplete field with the given ID and options. * * options['with'] defaults to "Form.Element.serialize('$field_id')", * but can be any valid javascript expression defining the * * @link http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter * @param string $field_id DOM ID of field to observe * @param string $url URL for the autocomplete action * @param array $options Ajax options * @return string Ajax script * @access public */	function autoComplete($field, $url = "", $options = array()) {		$var = '';		if (isset($options['var'])) {			$var = 'var ' . $options['var'] . ' = ';			unset($options['var']);		}		if (!isset($options['id'])) {			$options['id'] = Inflector::camelize(r("/", "_", $field));		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -