javascript callback initial function
roy - 24/09/2008 15:46 (laatste wijziging 25/09/2008 16:10)
PHP gevorderde
Beste allemaal,
IK wil vanuit een functie een andere functie aanroepen die alleenmaar data uit de datbase ophaald en de waarde returned.
Waarom kan ik geen waarde returnen naar de eerste functie. Daar wil ik vervolgens de data bewerken.
Dus de tweede functie moet alleen data ophalen en returnen..
zoiets:
function getAjaxRequest(classname, method, arguments)
{
$.get("../../include/service.php?classname=" + classname + '&method=' + method + '&arguments=' + arguments,
function( response ) {
return response;
}
);
}
function buildMenu()
{
getAjaxRequest('menu', 'getMenu', null);
alert(response);
}
function getAjaxRequest( classname, method, arguments)
{
$.get ( "../../include/service.php?classname=" + classname + '&method=' + method + '&arguments=' + arguments,
function ( response ) {
return response;
}
) ;
}
function buildMenu( )
{
getAjaxRequest( 'menu' , 'getMenu' , null ) ;
alert ( response) ;
}
Hopende op wat uitleg,
Roy
10 antwoorden
Gesponsorde links
Kr4nKz1n - 24/09/2008 15:55
Onbekend
function( response ) zie ik een keer staan.
Dit mag gewoon? Aangezien je met deze benaming een function aanmaakt...
roy - 24/09/2008 16:08
PHP gevorderde
ik maak gebruik van jquery
de ajax functie, wordt een dynamische.
Ik zie geen antwoord op de vraag, waarom het gereturnde niet gealert wordt....
Kr4nKz1n - 24/09/2008 16:34
Onbekend
Ik zie geen antwoord op me vraag? Nu ook nog zeuren? Ik probeer er naar toe te gaan.
Moet je even graven.
Niet zo ongeduldig ja!
Mad_Mike - 24/09/2008 16:38
PHP beginner
#
function buildMenu()
{
getAjaxRequest('menu', 'getMenu', null);
alert(response);
}
#
function buildMenu( )
{
getAjaxRequest( 'menu' , 'getMenu' , null ) ;
alert ( response) ;
}
Je roept eerst je AJAX functie aan, deze voert een bepaalde actie uit en geeft de waarde terug. Maar hier doe je niets mee. Je alert een variabele die niet bestaat; niet in de functie en ook niet globaal.
var response = getAjaxRequest('menu', 'getMenu', null);
dit zou je verder opweg moeten helpen!
ps. Maak je gebruik van FireFox icm FireBug plugin? Dan kan je gemakkelijk javascript errors debuggen ;)
roy - 24/09/2008 18:41
PHP gevorderde
Om te testen zeg ik in het php-bestand return "test";
Maar hij alert(undefined)
wat doe ik fout?
Giant - 24/09/2008 21:24
PHP beginner
zoals Mad_Mike ook al zei:
je maakt de variable response niet aan!
var response = getAjaxRequest('menu', 'getMenu', null);
alert(response);
var response = getAjaxRequest( 'menu' , 'getMenu' , null ) ;
alert ( response) ;
doe het zo
roy - 25/09/2008 09:36 (laatste wijziging 25/09/2008 09:36)
PHP gevorderde
Beste,
Ik heb nu dit:...
function buildMenu()
{
var response = getAjaxRequest('menu', 'getMenu', null);
alert(response);
}
function getAjaxRequest(classname, method, arguments)
{
$.getJSON("../../include/service.php?classname=" + classname + '&method=' + method + '&arguments=' + arguments,
function(data) {
return data;
}
);
}
function buildMenu( )
{
var response = getAjaxRequest( 'menu' , 'getMenu' , null ) ;
alert ( response) ;
}
function getAjaxRequest( classname, method, arguments)
{
$.getJSON ( "../../include/service.php?classname=" + classname + '&method=' + method + '&arguments=' + arguments,
function ( data) {
return data;
}
) ;
}
php:
<?
require_once("includeAll.inc.php");
$cPage = new page($conn);
$json = new Services_JSON();
if($_GET['classname'] == 'menu')
{
if($_GET['method'] == 'getMenu')
{
echo $json->encode($cPage->getPageById(1));
}
}
?>
<?
require_once ( "includeAll.inc.php" ) ;
$cPage = new page( $conn ) ;
$json = new Services_JSON( ) ;
if ( $_GET [ 'classname' ] == 'menu' )
{
if ( $_GET [ 'method' ] == 'getMenu' )
{
echo $json -> encode ( $cPage -> getPageById ( 1 ) ) ;
}
}
?>
In het firebug console zie ik wel response. Maar alert geeft undefined i.p.v. object...
Hoe kan het zijn dat ik in het console wel een response zie, maar dat data leeg is....
Groeten,
Roy
BramBo - 25/09/2008 11:13
JS gevorderde
function(data) { return data; } is een callback methode en zal dus niet retourneren naar je initiële methode, je kan echter zelf een callback meegeven.
like so:
function mijn_callback(data) {
alert(data);
}
function buildMenu()
{
getAjaxRequest('menu', 'getMenu', null, mijn_callback);
}
function getAjaxRequest(classname, method, arguments, callback)
{
$.getJSON("../../include/service.php?classname=" + classname + '&method=' + method + '&arguments=' + arguments, callback);
}
function mijn_callback( data) {
alert ( data) ;
}
function buildMenu( )
{
getAjaxRequest( 'menu' , 'getMenu' , null , mijn_callback) ;
}
function getAjaxRequest( classname, method, arguments, callback)
{
$.getJSON ( "../../include/service.php?classname=" + classname + '&method=' + method + '&arguments=' + arguments, callback) ;
}
roy - 25/09/2008 14:29 (laatste wijziging 25/09/2008 14:29)
PHP gevorderde
Dus het is onmogelijk om een aparte functie te maken die alleenmaar de data ophaald uit de database en dat terug geeft aan de functie waar de aanroep heeft plaatsgevonden?
BramBo - 25/09/2008 18:55
JS gevorderde
Neen, dit zou betekenen dat de calls Synchroon lopen Asynchronous JavaScript and XML
Anyway je kunt de functie zelf ook mee geven en niet apart te definieren
getAjaxRequest('menu', 'getMenu', null, function(data) { alert(data);});
getAjaxRequest( 'menu' , 'getMenu' , null , function ( data) { alert ( data) ; } ) ;
Gesponsorde links
Dit onderwerp is gesloten .