Autor Zpráva
FilipP
Profil
Ahoj, mám problém:
function nejaka_funkce(){
 var g = $.get("nejaka_stranka.php");//protože se celé $.get chová jako objekt
 return g.responseText; //to je podle chromu proměnná ve které je uložený ten text
}
a potom to píše: undefined
Diky za radu
Kcko
Profil
FilipP:
Asynchronní ... AJAX ... takhle to nefunguje. Vyreš to pomocí callback funkce nebo si nastav ajaxAsync na FALSE a mělo by to fungovat, ale dobré řešení to není.

Už jsi to jednou řešil ne?
FilipP
Profil
Jo ale moc jsem to nechápal jak co udělat protože nejsem vystudovanej programátor... A nemohl by jsi mi napsat nějáký jednoduchý vzor prosímtě?
Kcko
Profil
FilipP:
Co přesně potřebuješ udělat? Neříkej mi, že vrátit proměnnou z ajaxu pomocí té funkce. Laicky popiš čeho chceš dosáhnout.
FilipP
Profil
Já chci prostě napsat třeba
if(get_name()=="John"){
 //něco udělá...
}
get_name() -> ta fukce v která vrací ten text z $.get
Ale prostě potřebuju z PHP souboru dostat to co vypíše
juriad
Profil
Zkus si představit, že máš hóódně pomalý internet (zkus si vyrazit do Českých hor s mobilním internetem) a každý požadavek na PHP trvá třeba 10 sekund.
Určitě nechceš aby se ti na 10 sekund kousnul prohlížeč jen proto, že čeká až funce get_name() vrátí odpověď.
Z toho důvodu se používá AJAX, první A znamená, NEČEKEJ na odpověď a mezitím prováděj něco jiného.
Ty se snažíš AJAX zmrzačit a sekáš do něj, co to jde, aby mu to Áčko upadlo.

// toto se provádí třeba při stisknutí tlačítka
$.get("dej_mi_jmeno.php", function(jmeno) {
  // tady čekáš na odpověď třeba 10 sekund
  // a až ti přijde odpověď, můžeš něco provést
  // do té doby stránka normálně funguje
  $('#jmeno').text(jmeno);
  // tady musíš provést vše, co závisí na získaném jménu
});
// tady se pokračuje ihned, bez čekání na odpověď,
// protože pokud bys čekal na odpověď, tak stránka by tu dobu nefungovala

zapamatuj si to jako vzor; možná lepší na pochopení je ekvivalentní* zápis:

// připravím si funkci, která se zavolá až dostane odpověď
function nastav_jmeno(jmeno) {
  $('#jmeno').text(jmeno);
  // tady musíš provést vše, co závisí na získaném jménu
}

$.get("dej_mi_jmeno.php", nastav_jmeno);
// tady se pokračuje ihned, bez čekání na odpověď,

* skoro, ale v tomto příkladu tomu tak skutečně je
_es
Profil
FilipP:
var g = $.get("nejaka_stranka.php");
Funkcia $.get nič nevracia, viď dokumentácia: api.jquery.com/jQuery.get. Ale ti umožňuje jej zadať funkciu, ktorá bude zavolaná po vrátení dát zo servera.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: