Ha javascriptben nincs megadva egy var változó, csak később kerül feltöltésre elindítható vele egy ajax post?
Nincs feltöltve még egy változó, ezt a weboldalon lehetne. Ezután jönne egy ilyen:
var x =''
if (x == 'xy')
function ajax_post(){
stb...
De valami oknál fogva nem akar működni. A lényege annyi lenne hogy ha feltöltik a változót, automatikusan ajax postoljon és törölje a változó tartalmát.
Már leírtam 3szor is mit szeretnék.
-Adott egy weboldal, jelen esetben az enyém
-Tartalmaz egy változót, amit a weboldalon lehet feltölteni
-Van a weboldalon egy text box, beírsz egy betűt, pl "A"
-Ebben a pillanatban elindul az ajax post, ami továbbít PHP-ba.
Melyik része nem érthető? Azt szeretném megoldani, hogy amint beírtak valamit a textbox-ba azonnal ajax posoltjon, de úgy hogy ne kelljen hozzá lenyomni egy buttont. Hanem figyelje valami a textboxot, és amint beírtak valamit ajaxposoltjon. Ha ezután sem érthető feladom, és megyek máshová érdeklődni :D
A C#-os leírás csupán hasonlóság volt, de sokan nem értik azt a programozási nyelvet. Semmi gond, hiszen most JS-ben szeretném ugyan ezt megoldani.
Kedves kérdező, szerintem rosszul teszed fel a kérdést.
A fő probléma, hogy a változót honnan "töltöd fel"?
A honlap űrlapjáról adsz neki értéket, vagy külön zajlik ez?
Ha a honlap ürlapjáról adsz meg neki értéket, akkor:
* érzékelni kéne, az ürlap változását
* változás esetén a változó vegye át az ürlapmező értékét
Ezek után leellenőrizhető a változó értéke. Ha megfelelő, akkor lehet Ajax-kérést eszközölni.
Itt csináltam egy egyszeri példát:
Egyébként a C#-os kódod - bár ~25 évnyi programozás után nem használok C#-ot - hibás.
Már az első sor:
string x = Convert.ToInt32(Console.ReadLine());
Itt a sztenderd bemenetről érkező sztring értéket (a Console.ReadLine() metódus ugyanis azt ad vissza: [link] ), átkonvertálod egész értékké, és átadod egy sztring értékű változónak. Ez egy erősen típusos nyelvnél szentségtörés.
Pláne, hogy utána a változót egy sztringgel hasonlítod össze:
if ( x == "xy")
Szóval nem kell a konvertálás:
string x = Console.ReadLine();
> Ez ugye C#-ban így néz ki:
Oké. C#-ban a ez valóban a futás egy adott pontján működik. Ennek a Javascriptes átirata valami ilyesmi lenne:
x = document.getElementById('bevitelimezo');
if (x='xy') {
alert('Kecske');
// vagy console.log('Kecske');
}
Egyrészt nem így néz ki:
if (x='xy') function valami() {
}
Egyébiránt a C#-os kódnak sincs értelme, hibás:
> string x = Convert.ToInt32(Console.ReadLine());
Oké, beolvasol egy sort. Az egy string. A Convert.ToInt32 az csinál belőle egy int típusú értéket. Ezt egy string típusú változónak akarod értékül adni, majd ellenőrizni, hogy 'xy'-e az értéke… Sajátos…
> ebben az esetben lépjen be az if ciklusba
Az if az egy feltételes elágazás, és nem ciklus. A feltételes elágazás olyan vezérlő szerkezet, ami egy adott feltételt tudsz vizsgálni és az alapján futtatsz vagy nem futtatsz le egy kódrészletet. A ciklus meg egy olyan vezérlő szerkezet, amiben a ciklusmag – innen kapta a nevét – *ciklikusan* ismétlődik egészen addig, amíg a ciklusfeltétel fennáll. Az if nem ciklus, lévén semmi nem ismétlődik benne.
Tehát az „if ciklus??? ” kérdés nem azt jelenti, hogy „if ciklus? Soha nem hallottam még róla.”, hanem azt, hogy „if ciklus? Mióta hívjuk ciklusnak az if vezérlő szerkezetet?”
~ ~ ~ ~ ~ ~ ~
> Már leírtam 3szor is mit szeretnék.
Nem, te azt írtad le, hogy szerinted hogyan kell megoldani azt, amit szeretnél, de nem tudjuk mit szeretnél. A mit szeretnék kérdésre valami ilyemi a leírás: Legyen egy weboldal egy beviteli mezővel, ami mondjuk az aktuális hőmérsékletet jelenti. Az szeretném, hogy ha beírta az értéket, akkor törölje a beviteli mező tartalmát, és anéllkül, hogy az oldal újratöltődne, küldje el azt GET paraméterként egy PHP scriptnek, ami majd letárolja ezt az értéket.
A gond az, hogy oké, van egy beviteli meződ. Sokféleképpen lehet annak a tartalmát kinyerni. Ki lehet nyerni minden változáskor. Meg ki lehet nyerni akkor, mikor elhagyja a fókusz a beviteli mezőt, meg ki lehet egy másik esemény hatására is nyerni a tartalmát, mondjuk egy „Beküld” gomb megnyomásának hatására. Nem mindegy, hogy melyikről van szó. Pl. ha azt akarod ellenőrizni, hogy az adott felhasználónév, amivel regisztrálni szeretne egy honlapra, az foglalt-e, akkor ehhez azt az eseményt kell elkapni, mikor a beviteli mező értéke megváltozott, ne kelljen az ellenőrzéshez mindig megnyomni egy „Ellenőriz” gombot. Persze ezesetben nem kell törölni a beviteli mező tartalmát. Ha viszont mondjuk hőmérsékletet akarsz beküldetni, mondjuk egy időjárási adatokat gyűjtő oldal esetén, akkor viszont nem szabad elkapni minden változást, mert ha valaki begépeli a 12-t, mint fokot, akkor az 1 megnyomása után is elküldi a beviteli mező tartalmát – ami 1 –, meg a 2-es billentyű megnyomása után is elküldi a beviteli mező tartalmát. Az eredmény, hogy a PHP scripted két adatot fog kapni, egy 1-est, és egy 12-t, holott a felhasználó csak a 12-t akart beküldeni.
Tehát még egyszer a kérdés: Pontosan mit akarsz csinálni?
Akkor valami ilyesmi lesz:
Persze nem biztos, hogy jó megoldás. Még mindig nem tudjuk, mit szeretnél csinálni, mihez kell ez a kód.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!