[TYPO3-dev] Trying to get my head around AJAX
Ton Akveld [netcreators]
ton at netcreators.com
Sun May 4 17:54:36 CEST 2008
Dear Simon,
Having encountered the same 'lack' of a description of one of the
stronger possibilities of xajax, and simply not having had the time to
delve into it some more, I am more than happy with and very grateful for
your contribution.
Thanks!
Ton Akveld
Fr. Simon Rundell SCP schreef:
> Dear Jochen et al
>
> Thank you! I have success using xajax! I eventually hacked up the
> xajax tutorial to perform a database query. It's funny that virtually
> all the AJAX examples are all to do with css style modifications and
> say very little about asych data querying which is really its
> strongest possibility.
>
> For the record and the benefit of others starting this road, here are
> the core parts of the proof of concept before I try and turn it into
> something useful :-) -
>
> Plugin Main function:
> ================
>
> function main($content,$conf) {
> $this->conf=$conf;
> $this->pi_setPiVarDefaults();
> $this->pi_loadLL();
> $this->pi_USER_INT_obj=1;
>
> require_once (t3lib_extMgm::extPath('xajax') . 'class.tx_xajax.php');
> $this->xajax = t3lib_div::makeInstance('tx_xajax');
> $this->xajax->decodeUTF8InputOn();
> $this->xajax->setCharEncoding('utf-8');
> $this->xajax->setWrapperPrefix($this->prefixId);
> $this->xajax->statusMessagesOn();
> // Turn only on during testing
> $this->xajax->debugOn();
> // Register the names of the PHP functions you want to be able to
> call through xajax
> // $xajax->registerFunction(array('functionNameInJavascript',
> &$object, 'methodName'));
> $this->xajax->registerFunction(array('processFormData', &$this,
> 'processFormData'));
> $this->xajax->processRequests();
> $GLOBALS['TSFE']->additionalHeaderData[$this->prefixId] =
> $this->xajax->getJavascript(t3lib_extMgm::siteRelPath('xajax'));
>
>
> $content .= '<h2>Ajax Development Test Plugin</h2>';
> $content .= '
> <form name="submittest" id="submittest"
> action="'.$this->pi_getPageLink($GLOBALS['TSFE']->id).'"
> method="post">
> Field:<input type="text" name="field" id="field" size="20" value="surname"><br>
> Table:<input type="text" name="table" size="30" id="table"
> value="tx_pddiocesedatabase_person"><br>
> Criteria:<input type="text" name="criteria" size="50" id="criteria"
> value="uid<10"><br>
> <input type="button" onclick="' . $this->prefixId .
> 'processFormData(xajax.getFormValues(\'submittest\'))" value="Query
> MySQL" >
> </form>
>
> <div id="results">
> Results Here
> </div>
>
> return $this->pi_wrapInBaseClass($content);
>
> } // end of main
>
> // now the two key functions in PHP
>
> function sGetFormResult($field, $table, $criteria) {
> // could be any kind of database query, here is a generic wrapper
>
> $sql="SELECT $field FROM $table WHERE $criteria";
> $result = mysql_query($sql) or die("Basic Lookup: <i>$sql</i> failed
> with error: ".mysql_error());
> # make sure that we recieved some data from our query
> $num_of_rows = mysql_num_rows ($result);
> if($num_of_rows==0) {
> return 'NOT FOUND'; }
> else {
> $count=0;
> while ($row = mysql_fetch_array ($result)) {
> $return_object[$count]=$row;
> $count++;
> } // while
> }
>
> return $return_object;
>
> } // function sGetFormResult()
>
> function processFormData($data) {
>
> $this->piVars = $data[$this->prefixId];
> $content = $this->sGetFormResult($data["field"], $data["table"],
> $data["criteria"]);
> $objResponse = new tx_xajax_response();
> $objResponse->addAssign('results', 'innerHTML',
> t3lib_div::view_array($content));
> return $objResponse->getXML();
>
> } // function processFormData($data)
>
>
> I hope this helps someone.
>
> Fr. Simon Rundell SCP
> Parish of S. Thomas the Apostle, Elson
> The Vicarage, 21 Elson Road, Gosport, Hants, UK, PO12 4BL
> Tel: 02392 582824 Mob: 07976 802123
> email: simon at rundell.org.uk
> web: http://www.saintthomaselson.org.uk
> blog: http://frsimon.wordpress.com
>
> "I came that you may have life - life in all its fullness"
> John 10:10
>
> 2008/4/29 Jochen Rieger <j.rieger at connecta.ag>:
>
>> Hi Simon,
>>
>> I'd propose two alternatives:
>>
>> 1) use the xajax extension... it's fairly easy to use. You will have to
>> set up a response object which can call several functions eg to update
>> your HTML code or popup an alert message etc. (the functions will be
>> found in the xajax response class).
>>
>>
>>
> _______________________________________________
> TYPO3-dev mailing list
> c
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-dev
>
More information about the TYPO3-dev
mailing list