jquery globalne premenne

Programovacie jazyky, rady, poradňa...
DeaDMAn_X
Medium Expert
Medium Expert
Príspevky: 94
Registrovaný: 06 apr 2009, 14:38

jquery globalne premenne

Príspevok od používateľa DeaDMAn_X »

Zdravim.Mam problem so zmenou hodnoty globalnej premennej v Javascripte.
Dam priklad:

priklad.js

Kód: Vybrať všetko


var x;
var y;


$(function(){

   $('button').click(function(){
            funkcia1(param);
            alert(x);
   });
   $('button').click(function(){
            y = funkcia2(param);
            alert(y);
   });


}

function funkcia1(param) {
    $.ajax({
             type: "POST",
             url: "/url",
             data: {
                  "action": "action",
                  "param": 'param'
             },
             success: function(res){
                  x = res;
             }
             
     });
}

function funkcia2(param) {
       $.ajax({
             type: "POST",
             url: "/url",
             data: {
                  "action": "action",
                  "param": 'param'
             },
             success: function(res){
                  return res;
             }
             
     });
}

.
.
.
atd

je vlastne jedno ci pouzijem sposob funkcie1 alebo funkcie2, ale ide mi o to, ako zmenit hodnotu globalnych premennych x a y
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: jquery globalne premenne

Príspevok od používateľa audiotrack »

je to úplne jedno
DeaDMAn_X
Medium Expert
Medium Expert
Príspevky: 94
Registrovaný: 06 apr 2009, 14:38

Re: jquery globalne premenne

Príspevok od používateľa DeaDMAn_X »

cize takto ako to mam by to malo fungovat?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: jquery globalne premenne

Príspevok od používateľa audiotrack »

podľa toho čo chápeš tým "fungovať". Bude to robiť presne to čo má, ale mám pocit že ty očakávaš že to robí niečo iné. Nedostaneš ani v jednom prípade v tom alerte hodnotu toho parametra ktorý dávaš do funkcia1 alebo funkcia2, ale nie preto že by sa tá globálna neprepísala, ale z iného dôvodu.

V prvom prípade si neuvedomuješ že ide o volanie ajaxu, a teda asynchrónne volanie. Funkcia sa spustí, na pozadí sa pošle request na url. Medzitým sa vykoná alert, ktorí ti hodí hodnotu x (ktorá ešte nie je zmenená). Potom niekedy neskôr sa obdrží odpoveď zo servera a zmení sa hodnota. Ak ju chceš zobrazíť po zmene, mal si teda ten alert dať do succes tej funkcie a nie za jej zavolaním

v druhom prípade do premennej zase uložíš návratový typ funkcie, ktorý nie je žiadny. Success je nová funkcia, a jej result sa nepredá ako result samotnej funkcie.

takže robí to čo to má, obe metody sa dajú využiť na prepis globálnej funkcie, ale musíš vedieť čo vlastne robíš a nie iba zliepať kod :)
Napísať odpoveď