ugrás a tartalomhoz

PHP function hívása AJAX-al ugyanabban a fileban (jquery-vel)

felyx · 2008. Már. 24. (H), 14.26
Nos a problémám az, hogy van egy PHP function ami teszteli egy regisztrációs formban hogy a megadott felhasználónév szabad e vagy sem, majd tesz az input után egy pipát vagy x-et megfelelően a végeredményhez és ezt a functiont szeretném meghívni AJAX-al, de nem akarok külön fileokat, tehát a PHP function és az ajax code is ugyanabban a fileban kellene hogy legyen. Megoldást találtam rá, XAJAX-al ezt meg lehet oldani, de jQuery-t szeretnék használni mert az nem csak ajax library stb., viszont ahhoz nem találtam megoldást vagy csak rosszul kerestem, ha valaki esetleg tudna segíteni azt megköszönném. Ha jQueryvel ezt nem lehet megoldani akkor esetleg más hasonló megoldás is érdekelne.
 
1

szimpla ajax kérés

Drawain · 2008. Már. 25. (K), 02.29
Egy egyszerű ajax kéréssel megoldhatod, sőt :) Mutatok egy lehetőséget a sokszáz megoldásból:

1. felraksz egy divet, mondjuk "nevEllenorzes" id-vel a felhasználó neve beviteli mező (legyen "nev") után
2. utána gombnyomásra, vagy bármi más eseményre meghívsz egy ajax kérést:

  $("#nevEllenorzes").load("fajlneve.php", {usernev: $("#nev").val() });
Ez meghívja a fajlneve.php fájlt, és átad egy post változót "usernev" néven.
3. php-ban végül a fájl elején fogadod a usernevet.

  if (isset($_POST["usernev"])) {
    ...Adatbázisban kikeresem a usernevet és összehasonlítom a $_POST["usernev"]-el, adatbázisról lecsatlakozok :)...
    if ($utkozes) {
      echo "Van ilyen nev";
    } else {
      echo "Szabad nev";
    }
    exit(0);
  }
Az ajax load pedig az eredményt betölti a div-be. Ennyi lenne :)
2

Köszönöm, de...

felyx · 2008. Már. 26. (Sze), 03.28
Köszönöm a válaszod, de pont ez az amit el akarok kerülni, ez egy külön php file-t hív meg az ellenőrzéshez amit én nem akarok, azt szeretném hogy az ajax egy php functiont hívjon meg ugyanabból a fileból amiben az ajax hívás van, nem egy külön fileból és azzal ellenőrizném az adatot. Eddig csak XAJAX-ban láttam erre megoldást sajnos, ezért érdekelt volna hogy más megoldás is létezik e rá.
3

Picit te is hozzátehetnél a probléma megoldásához

zila · 2008. Már. 26. (Sze), 09.06
A filenve.php lehet az a file ami eredetileg legenerálta az oldalt, ennek átadsz egy függvény nevet ami szintén ebben a fileban van, pl. ajax_func="php_fuggvenyem" a fileoban meg ellenőrzöd, hogy van-e ajax_func paraméter, ha van akkor az abban megadott függvény létezik-e, ha létezik, akkor meghívod. Hol a probléma?
4

...

Drawain · 2008. Már. 26. (Sze), 15.53
Én éppen erről beszéltem... Az általam írt kódrészlet a generáló fájl elején van, és mikor meghívódik egy paramétert kapva, úgy nem az oldalt generálja, hanem az eredményt adja vissza... (exit-nél kiszáll a scriptből és nem generálja az oldalt)
5

Szerintem...

Velias9 · 2008. Már. 27. (Cs), 19.58
... valami ilyesmire gondolnak:

...

if (!empty($_REQUEST['fuggveny_neve']) && !empty($_REQUEST['fuggveny_param']))
{
	if ($_REQUEST['fuggveny_neve'] == "Az engedélyezett függvény neve" && function_exists($_REQUEST['fuggveny_neve']))
	{
		call_user_func($_REQUEST['fuggveny_neve'], $_REQUEST['fuggveny_param']);
		exit(0);
	}
	else
	{
		exit(0);
	}
}

...
Ezt a kódot berakod valahova a program elejére, akkor szerintem az történik, amit szeretnél!
http://hu.php.net/manual/hu/function.function-exists.php és
http://hu.php.net/manual/hu/function.call-user-func.php
a függvények leírása.

(Az 'empty' megkettőződésével ne törődj!)
6

Köszönöm.

felyx · 2008. Már. 30. (V), 02.41
Megnézem, köszönöm a választ mindenkinek!