Keresés

Új hozzászólás Aktív témák

  • martonx
    veterán

    Köszi! Ezért szeretek ide írni, mert pl ez eszembe se jutott pedig annyira kézenfekvő a dolog. Viszont még egy kérdés, a keretet hogy tudnám megoldani? Mert ha onClick-re állítom azt is akkor, az összes képet kijelöli amire klikkel a felhasználó.

    Nem értem mi a baj az onClick-el?

  • martonx
    veterán

    Sziasztok!

    Jelenleg, van egy avatar kép választóm semmi extra:

    for($i=1;$i<=10;$i++){
    $content.= '
    <span style="display: block; float: left;"><img src="style/avatar/'.$i.'.png" width="50px">
    <br><input type="radio" value="'. $i.'" name="avatar"></span>
    ';
    }

    Ahogy látjátok az avatar képek alá raktam egy radio button, de azt a radio butotn szeretném lecserélni, egy szebb megoldásra. Gondoltam egy olyanra hogy ha a képre kattintok akkor kijelüli és egy kerettel ezt ki is emeli. És csak akkor cseréli az avatar képet ha rányomok egy gombra. Úgy mond egy kiválasztó funkciót szeretnék csinálni.

    Azért írtam ebbe a topikba, mert valami JS-es megoldásra gondoltam. Tudna esetleg valaki mondani egy elinduló pontot. Mert egyenlőre még nem tudom hogy kellene neki indulni.

    kiraksz hide-olt input-ot.
    Amikor user rákattint a képre, annak valami azonosítóját js-el betöltöd input value-jába, és amikor elküldöd a szervernek, akkor ezt a value-t fogod figyelni, és elmenteni.

  • Sk8erPeter
    nagyúr

    Rendben legközelebb már felrakom az aktuális dolgokat, de közbe már feladtam a betűméretezést, találtam jobb megoldást a megjelenésre.

    UI: Ilyenkor már mehet off-ban? Már régóta fórumozom itt, de nem tudom mikor mi a szokás, bocsánat. :B

    Lehet, miért ne. :D
    Végül melyik megoldást választottad?

  • SektorFlop
    aktív tag

    Sziasztok!

    Saját projektem desing-én dolgozom, az úgy nevezett responsive style-t követném, ha így kell írni. Elsőnek csinálok ilyet, ahhoz képest alakulgat egész jól. Viszont próbáltam a betű méretett is százalékban megadni, de rá kellet jönnöm hogy az se használ. A böngésző átméretezésénél a karakterek egymás alá folynak. Egyik ismerősöm megemlítette, hogy js-el lehet állítani a karakterek méretét úgy hogy a böngésző ablakához igazodjon.

    Valaki megtudná mondani, hogy mi kellene pontosan keresnem, mert útbaigazítást viszont nem adott.

    közben találtam egy ilyet, szerintem ez kell nekem: [link]

    csak nem akar valamiért szuperálni. :(

  • Sk8erPeter
    nagyúr

    egy hülye kérdésem lenne. nagy butaságot csinálok azzal hogy így akarom hozzáfűzni a php változómat?
    submitHandler: function(form) {
    $.post('user/user.php?insert=ok&azonosito='+<?php echo $azonosito;?>, $('#azonositoForm').serialize(), function(data) {
    $('#result').html(data);
    });
    }

    ui: Közbe leesett hogy rejtett mezőt kellene használnom.

    Így is lehet, de inkább ténylegesen stringként csapd hozzá az azonosítót, hogy mindig az elvárt eredményt kapd:
    'user/user.php?insert=ok&azonosito='+<?php echo $azonosito;?>
    HELYETT
    'user/user.php?insert=ok&azonosito=<?php echo $azonosito;?>'
    (magyarul PHP-vel fűzöd hozzá)

    Ennek a megoldásnak viszont hátránya, hogy nem szép, mert kevered a JavaScript-kódot a PHP-kóddal, ami szemantikai keveredés, alapvetően kerülendő. Itt már inkább egy JS-ben definiált változót kellene inkább hozzáfűznöd.
    De ettől függetlenül nem csinálsz nagy butaságot ezzel a megoldással, max. kényelmetlen, de így is használható.

  • Jim-Y
    veterán

    egy nagyon egyszerű példám lenne... valaki esetleg megtudja mondani mi lehet a baj?

    function beutes(){
    var kijelzo = document.getElementById("kijelzo");
    var gomb = document.getElementById(id);
    kijelzo.value = kijelzo.value + gomb.value;
    }

    egy kis html rész hozzá:

    <input type="text" id="kijelzo"/>
    <div style="display:inline-table"><input type="button" value="1" id="egy" onClick="beutes()"></div>
    <div style="display:inline-table"><input type="button" value="2" id="ketto" onClick="beutes()"></div>
    <div style="display:inline-table"><input type="button" value="3" id="harom" onClick="beutes()"></div>

    azt szeretném, hogy a text mezőbe másolja mellé az aktuális számhoz a kívánt számot.

    hibaüzenetnek ezt írja:
    Uncaught ReferenceError: id is not defined
    beutesindex.html:31
    (anonymous function)index.html:54
    onclick

    Próbáld így:

    <input type="text" id="kijelzo"/>
    <div style="display:inline-table"><input type="button" value="1" id="egy" onClick="beutes(this)"></div>
    <div style="display:inline-table"><input type="button" value="2" id="ketto" onClick="beutes(this)"></div>
    <div style="display:inline-table"><input type="button" value="3" id="harom" onClick="beutes(this)"></div>

    function beutes(id){
    document.getElementById("kijelzo").value+=id.value;
    }

  • Speeedfire
    félisten

    egy nagyon egyszerű példám lenne... valaki esetleg megtudja mondani mi lehet a baj?

    function beutes(){
    var kijelzo = document.getElementById("kijelzo");
    var gomb = document.getElementById(id);
    kijelzo.value = kijelzo.value + gomb.value;
    }

    egy kis html rész hozzá:

    <input type="text" id="kijelzo"/>
    <div style="display:inline-table"><input type="button" value="1" id="egy" onClick="beutes()"></div>
    <div style="display:inline-table"><input type="button" value="2" id="ketto" onClick="beutes()"></div>
    <div style="display:inline-table"><input type="button" value="3" id="harom" onClick="beutes()"></div>

    azt szeretném, hogy a text mezőbe másolja mellé az aktuális számhoz a kívánt számot.

    hibaüzenetnek ezt írja:
    Uncaught ReferenceError: id is not defined
    beutesindex.html:31
    (anonymous function)index.html:54
    onclick

    Írja is, hogy az id nincs definiálva ami érthető is.

    var gomb = document.getElementById(id);

    Tehát itt nincs megadva neki, hogy melyik id kellene. Azt, hogy itt most mi is kellene neked...gondolom a buttonnál kellene visszadni az id-t. Tehát paraméterrel indítani. De azt nem tudom, hogy lehetne így visszaadni, csak jQuery-vel. :B

    function beutes(id){
    var kijelzo = document.getElementById("kijelzo");
    var gomb = document.getElementById(id);
    kijelzo.value = kijelzo.value + gomb.value;
    }

  • Sk8erPeter
    nagyúr

    Nah okés! most már csak ki kell szűrni hogy csak azokat írja ki akiknek van name paramétere. Nem tudom mikor lesz rá időm... majd megírom hogy sikerült e összehozni.

    Rövid példával élve lehet másképp is ellenőrizni:
    contacts = [{name:'Pete', asd: 'asd'}, {asd: 'asd'}];
    for(var index = 0; index<contacts.length;index++){
    alert(contacts[index]['name']);
    }

    Itt látható, hogy a második cikluslépésben "undefined"-ot dob fel.

    Szóval próbáld így, mert így nem dob exceptiont:
    var name = contacts[index]['name'];
    if(!name){
    name = 'Unknown name';
    }
    else{
    name = contacts[index]['name']['formatted'];
    }

    Remélem így jó. Lehetne ugyanilyen módon a phoneNumberre is csekkolni.

  • Sk8erPeter
    nagyúr

    akkor oldjuk meg a problémát:D
    a contacts.length-re ha jól emlékszem 83-at írt, kicsit később lesz egy kis időm és neki állok. Már raktam egy android környezetet is a gépre, hogy több helyen is tudjam tesztelni, mivel úgy lenne igazi hogy minden eszközön ugyan úgy reagál a dolog.

    Hmm, akkor esélyes, hogy tényleg valahol dob egy el nem kapott exceptiont, ezért áll le a ciklus, és ezért nem írja ki a neveket, de nyomozzuk ki, próbáld meg a try-catch blokkal, hátha azzal előrébb jutunk.

  • Sk8erPeter
    nagyúr

    Nem jött össze :( Odáig fut le a dolog, hogy kiírja mennyi elem van a tömbben.... De egyenlőre hanyagolom a Concats dolgokat... még később azért próbálkozom vele, nem hagyom ennyibe. Minden esetre köszönöm a segítségedet.

    Nincs mit!
    De azért oldjuk meg ezt a problémát, már engem is zavar. :D
    A contacts.length-re mennyit ír?

    Lehet amúgy, hogy az egész for ciklus belsejét egy try-catch blokkba kellene tenni, így legalább elkap minden esetlegesen keletkező kivételt (ilyenekre gondolok, hogy mondjuk nem létezik a contacts[index].name.formatted kulcs, csak a .name-ig, vagy ilyesmi), tehát próbáld átalakítani így a for ciklusodat (a korábbiak megmaradhatnak, még az isset() függvény felhasználása is):

    for (var index = 0; index < contacts.length; index++) {
    try {
    var name = contacts[index].name.formatted,
    li = document.createElement('li'),
    phoneNumbers, phoneNumber_first;
    try {
    if (isset(contacts[index].phoneNumbers)) {
    phoneNumbers = contacts[index].phoneNumbers;
    }
    if (isset(phoneNumbers[0].value)) {
    phoneNumber_first = phoneNumbers[0].value;
    }
    } catch (e) {
    alert('problem with phoneNumber...');
    }
    if (isset(phoneNumber_first)) {
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    } else {
    li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
    }
    ul.appendChild(li);
    } catch (e) {
    alert(e);
    }
    }

    Most itt annyit változtattam, hogy belepakoltam egy try-catch blokkba.

  • Sk8erPeter
    nagyúr

    soronként beraktam egy alert-et

    itt áll le a ciklus második körbe:

    var phoneNumber = contacts.phoneNumbers[0].value;

    Pont kérdezni akartam, milyen készüléked van, mert [írják], hogy pl. BlackBerry-n csak részleges a támogatása. Ez más készüléken is igaz lehet.

    Ezért érdemes ellenőrizni, hogy mondjuk létezik-e egyáltalán phoneNumbers, mert ha nem, és azt próbálod felhasználni, akkor könnyen kaphatsz egy exceptiont, és onnantól nem csoda, hogy nem működik az egész.
    Próbáld meg a következőképp:
    Az onSuccess-t módosítsd az alábbi módon, és egészítsd ki az isset() függvénnyel, ahogy alább látható, a többi kód maradhat ugyanúgy:

    function isset () {
    // !No description available for isset. @php.js developers: Please update the function summary text file.
    //
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/isset
    // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // + improved by: FremyCompany
    // + improved by: Onno Marsman
    // + improved by: Rafał Kukawski
    // * example 1: isset( undefined, true);
    // * returns 1: false
    // * example 2: isset( 'Kevin van Zonneveld' );
    // * returns 2: true
    var a = arguments,
    l = a.length,
    i = 0,
    undef;

    if (l === 0) {
    throw new Error('Empty isset');
    }

    while (i !== l) {
    if (a[i] === undef || a[i] === null) {
    return false;
    }
    i++;
    }
    return true;
    }


    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    alert('length of contacts: '+contacts.length);

    for (var index = 0; index < contacts.length; index++) {
    var name = contacts[index].name.formatted,
    li = document.createElement('li'),
    phoneNumbers,
    phoneNumber_first;
    try{
    if(isset(contacts[index].phoneNumbers)){
    phoneNumbers = contacts[index].phoneNumbers;
    }
    if(isset(phoneNumbers[0].value)){
    phoneNumber_first = phoneNumbers[0].value;
    }
    } catch(e){
    alert('problem with phoneNumber...');
    }
    if(isset(phoneNumber_first)){
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    }
    else{
    li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
    }
    ul.appendChild(li);
    }
    }

  • SektorFlop
    aktív tag

    Közbe próbáltam keresni a hibát alert ablakokkal, hogy nem-e áll meg a ciklus valahol.
    Szóval a ciklus elejére elhelyeztem ezt: alert("belépet");
    A végére pedig ezt: alert(i);

    Elsőre sikeresen belép a ciklusba, le létrehozza az li tag-et elhelyezi benne a nevet, aztán belép másodszorra is a cikluba kiírja ismét alertbe hogy belépet, de onnantól nem történik semmi. Nem lehet hogy nem az li létrehozásával van valami gubanc?

    soronként beraktam egy alert-et

    itt áll le a ciklus második körbe:

    var phoneNumber = contacts.phoneNumbers[0].value;

  • Sk8erPeter
    nagyúr

    Ahha az alert ablak többször is felvillant nevekkel, bár egy-kettő üres volt, de ott már biztos a telefon oldalán van a hiba.

    Nem tudod esetleg listázással mi lehet a baj?

    Rájöttem, hogy a kettő között mi a különbség.
    A kódban, amit Te mutattál, ez van:

    options.filter="";
    var fields = ["phoneNumbers", "name"];

    a példakódban ez:

    filter = ["displayName"]; // return contact.displayName field
    Itt mondjuk elcseszték, filter helyett itt fields akart szerintem lenni az elnevezés, de mindegy, nem is ez a lényeg.
    Tehát ott displayName-et használnak, nálad a sima name van. Lehet, hogy a name valamiért üres (ezért nem jelenik meg nálad), a displayName viszont nem.

    Ezért az itt lévő kódodat közelítsük meg másképpen, próbáld átírni így a JavaScript-kódot:

    function onDeviceReady() {
    var options = new ContactFindOptions();
    options.filter = "";
    var fields = ["displayName", "phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }

    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for (var index = 0; index < contacts.length; index++) {
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    ul.appendChild(li);
    }
    }

    function onError(error) {
    alert('hiba!');
    }

    function init() {
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    ===

    (#2466) SektorFlop : az entries tömb hosszát adja meg.

  • Sk8erPeter
    nagyúr

    Szintén csak a legelső nevet listázza ki, bár nem értem hogy mi szükség a for ciklusra ha alapértelmezett ként csak egy nevet add vissza?

    Hát most így nem látok bele, alapból úgy gondolnám, ha beállítod, hogy ne csak egyet adjon vissza, akkor nem is csak egy lesz benne, és tömbként működik, különben stringként... ezt viszont cáfolja az utána lévő példa, ha tudnám próbálgatni, könnyebben meg tudnám mondani, de nálad van az eszköz. :D

    És ha pontosan úgy csinálod, ahogy ebben a példában van, tehát alerttel megpróbálod mindegyiket kiíratni?

  • Sk8erPeter
    nagyúr

    Most tanulom a dolgot példa programok alapján próbálom összedobni. Angol könyvből tanulom sajnos így nehézkesen megy.

    Egy android alkalmazásról lenne szó ami csak kilistáza a neveket és ha valamelyikre rábökünk a tárcsázóba bemásolja a számát, igazából az onSuccess függvény első fele nem világos nekem. Ha jól értettem a könyv szerint a contacts tömb tartalma a telefonon lévő névjegyzékek. Remélem nem írok nagy hülyeségeket.

    Ugyan ezzel a módszerrel sikerült kilistáznom az sd kártya tartalmát, de névjegyzékek esetén csak az első nevet írja ki. Gondolkoztam azon hogy esetleg a telefon oldalán lehet a probléma.

    A témával kapcsolatban nem találtam topicit, ezért merészkedtem ide írni, mivel az egész js ugyan úgy.

    teljes dokumentum:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Kapcsolatok</title>

    <script type="text/javascript" src="phonegap-1.1.0.js"></script>
    <script type="text/javascript">

    function onDeviceReady(){
    var options = new ContactFindOptions();
    options.filter="";
    var fields = ["phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }

    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for(var index=0;index<contacts.length;index++){
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = "<a href=\"tell://"+phoneNumber+"\>"+name+";</a>";
    ul.appendChild(li);
    }
    }

    function onError(error) {
    alert('hiba!');
    }
    function init(){
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    </script>
    </head>
    <body onLoad="init()">

    <h1 align="center">Névjegyek</h1>

    <ul id="list"></ul>

    </body>
    </html>

    Gyors keresgélés után megtaláltam a ContactFindOptions-t: [link].
    Ez alapján pedig ez a baj:
    Properties

    filter: The search string used to find contacts. (DOMString) (Default: "")
    multiple: Determines if the find operation should return multiple contacts. (Boolean) (Default: false)

    A félkövérített rész azt mondja meg, hogy alapértelmezettként nem sok emberkét ad vissza, hanem egyet a felvett kapcsolatok közül.
    Ezért a megoldás az, hogy egészítsd ki a kódodat, az
    options.filter="";
    sor ALÁ rakd még be ezt is:
    options.multiple=true; // return multiple results

    Remélem így már sikerül, majd írd meg, mi a helyzet.

  • Sk8erPeter
    nagyúr

    Valaki ha esetleg tud segítsen!

    Névjegyzéket szeretnék kilistázni, de csak az első nevet írja ki.

    function onDeviceReady(){
    var options = new ContactFindOptions();
    options.filter="";
    var fields = ["phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }
    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for(var index=0;index<contacts.length;index++){
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = ""+name+", "+phoneNumber+"";
    ul.appendChild(li);
    }
    }
    function init(){
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    És szerinted honnan találjuk ki, hogy mi van a contacts tömbödben? :U
    Az sem igazán világos, a nevek kilistázására szolgáló függvénynek hogyan adhattál ennyire nem találó nevet, mint az onSuccess. :) Minden függvény lehetőleg kapjon olyan nevet, amire való.
    Szóval ha szeretnél segítséget, teljes kódra lenne szükség, vagy legalább olyanra, amiből kiderül, egyáltalán mit csinálsz korábban.
    Példakódot is felrakhatnál jsbin-re: [link].

  • Sk8erPeter
    nagyúr

    Kicsit utána olvastam és nehezen sikerült összehozni. Köszönöm a segítséget! :R Van még mit tanulnom :)

    Szívesen! Sok sikert. :R

  • Sk8erPeter
    nagyúr

    éreztem hogy az egész rossz... nem értek se az ajaxhoz és a javascripthez is csak kicsit :( a header helyet azért használtam scriptet mert atw-vén futna a dolog és ott mindig hibát írt a header-re. próbáltam más irányba menni ezzel a dologgal, ahogy írtam nem értek hozzá, így erőltetem inkább ezeket a scripteket, de sajnos nem járok sehogy se sikerrel :( mindenesetre köszönöm a segítséget.

    Ne add fel, hidd el, az elején én is csak kapkodtam a fejem, hogy "most mi va'? Semmit nem értek." :D
    Aztán szép lassan összeáll a kép, de azt az ember nem ússza meg, hogy sokat olvasgasson utána.
    A header() akkor szokott hibát okozni, ha van bármiféle kiírás még a fejlécek kiküldése előtt. Elég akár egyetlen szóköz is ahhoz, hogy probléma legyen. Vagy pl. a karakterkódolási probléma: UTF-8 BOM-mal - na az nem jó, mert kiokád a doksi elejére egy felesleges karaktersorozatot, mindig BOM nélküli UTF-8-kódolást használj (ezt Notepad++-ban nagyon jól lehet csekkolni).
    Azért majd még egyszer olvasd át, amiket írtam, remélem abból nagyjából vágni fogod, mihez is kéne nyúlni. De kérdezz vissza, ha valami nem egyértelmű.

  • Sk8erPeter
    nagyúr

    nem sikerül összehoznom...
    mobil.php fájlom ahol a form található...

    <div data-role="page" id="mailcsere">
    <div data-role="header">
    <h1>E-mail módosítás</h1>
    </div>
    <div data-role="content">
    <form action='/' method='post' id="mailcsere">
    <input type='text' name='email' />
    <input type='submit' value='Módosítás' />
    </form>
    <script>
    /* attach a submit handler to the form */
    $("#mailcsere").submit(function(event) {

    /* stop form from submitting normally */
    event.preventDefault();

    /* get some values from elements on the page: */
    var $form = $( this ),
    term = $form.find( 'input[name="email"]' ).val(),
    url = $form.attr( 'action' );

    /* Send the data using post and put the results in a div */
    $.post( 'login/mailcsere.php', { email: term },
    function( data ) {
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );
    }
    );
    });
    </script>
    </div>
    <div data-role="footer">
    <h4>Page Footer</h4>
    </div>
    </div>

    mailcsere.php

    <?
    session_start();
    $felhasznalo=$_SESSION['felhasznalo'];
    require_once ('connect.php');
    $email=$_POST['email'];
    $sql = "UPDATE `felhasznalok` SET email='$email' WHERE user='$felhasznalo';";
    if (mysql_query($sql)) {
    echo "<script type='text/javascript'>window.location='mobil.php?szerkezt=sikeres'</script>";
    exit;
    }
    else {
    echo "<script type='text/javascript'>window.location='mobil.php?szerkezt=sikertelen'</script>";
    }
    ?>

    a mobil.php fájlom azért néz ki így mert phonegap-el dolgozom, ezért is bajlódom a formokkal :W

    Ez a kód már csak azért is fájó, mert olyan könnyen támadható az oldalad SQL Injectionnel, mint az állat. Nem ártana escape-elni a felhasználótól érkező tartalmat - soha ne bízz meg abban az adatban, ami a felhasználótól közvetlenül érkezik...

    Másrészt ha kódot illesztesz be, akkor jelöld ki a kódodat itt a szövegmezőben, majd kattints a "Programkód" gombra, pont arra való, hogy valami normálisan átlátható formában legyenek a kódok.

    Harmadrészt: a mailcsere.php fájlban abszolúte semmi értelme JavaScripttel átirányítani a felhasználót, arra ott a PHP header() függvénye is - felesleges tehát kiíratni bármit is.
    Ahogy a példában van:
    header('Location: http://www.example.com/');
    de ezelőtt ne legyen SEMMILYEN kiíratás.
    DE (!!!) ezt NE TEDD BELE!! Egyáltalán ne rakj bele semmilyen átirányítást, mert most AJAX-os kommunikáció zajlik, lásd később a magyarázatot.

    Aztán menjünk tovább.
    Ez van most a kódodban:
    /* Send the data using post and put the results in a div */
    $.post( 'login/mailcsere.php', { email: term },
    function( data ) {
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );
    }
    );

    Ez most azt csinálja, hogy a login/mailcsere.php fájlnak elküldi a term-ben található adatot, az emailbe objektumba begyűjtve, ez majd PHP-oldalon is megjelenik.
    A sikeres (!) adatküldés esetén (pl. létezik a fájl, elérhető, nem dobott vissza hibát, stb.) a content változóba úgy pakolja be az adatot, hogy a visszakapott adatokból kikeresi a "content" id-val rendelkező DOM-elemet (!), aztán a content változó tartalmát bepakolja a "result" id-val rendelkező HTML-elembe.

    Egyrészt: amit Te visszaadsz a PHP-fájllal, abba nem raksz bele semmi olyat, amiben "content" id-val rendelkező elem van, másrészt egyáltalán nincs "result" id-vel rendelkező elemed az oldalon.
    Sőt, a PHP-fájlban csak azt a JavaScriptes visszairányítós részt íratod ki, ami AJAX-os kommunikáció esetén eleve felesleges.

    Először próbáld csak úgy, hogy kiíratod echo-val, hogy "siker" vagy "hiba", aztán a $.post részt egyelőre (!) így módosítod:
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );

    HELYETT
    var content = $( data );
    $( "#result" ).empty().append( content );

    Ezenkívül még tegyél be a mobil.php fájlba egy ilyet valahova a végére mondjuk:
    <div id="result"></div>

    Ide fogja pakolni az AJAX-kommunikáció eredményét.

  • Sk8erPeter
    nagyúr

    úgy látom ezzel a módszerrel áttudom adni post-al is ami még jobb lenne... egy kis segítséget kérnék, 2 mezőt szeretnék átadni, és hol kell megadni hogy melyik oldalnak küldené az űrlap? tapasztalatom szerint nem elég action-ba beírni.

    Igen, jól láttad, jQuery-vel nagyon egyszerű az AJAX-os kommunikáció.
    Itt konkrét példát is mutatnak rá: jQuery.post().
    Nézd meg alul azt a keresőt, ami bemutatja ennek a működését.

    A lényeg kiszedve az oldalról, van egy ilyen form:

    <form action="/" id="searchForm">
    <input type="text" name="s" placeholder="Search..." />
    <input type="submit" value="Search" />
    </form>
    <!-- the result of the search will be rendered inside this div -->
    <div id="result"></div>

    Tehát az "s" name-mel rendelkező input-elem tartalmát szeretnénk elküldeni POST-metódussal. Itt a jQuery-kód:

    /* attach a submit handler to the form */
    $("#searchForm").submit(function(event) {

    /* stop form from submitting normally */
    event.preventDefault();

    /* get some values from elements on the page: */
    var $form = $( this ),
    term = $form.find( 'input[name="s"]' ).val(),
    url = $form.attr( 'action' );

    /* Send the data using post and put the results in a div */
    $.post( url, { s: term },
    function( data ) {
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );
    }
    );
    });

    A lényeg ez, ami az elején lévő példakódban van, ez elég jól érthető:

    $.post('ajax/test.html', function(data) {
    $('.result').html(data);
    });

  • Sk8erPeter
    nagyúr

    sziasztok!

    text mező value értékét szeretném átadni egy PHP fájlnak GET metódussal, tudomásom szerint ehhez script szükséges. valaki tudna ebbe segíteni? akár egy egyszerű példa bemutatásával?

    jQuery segítségével a legegyszerűbb: jQuery.get(), itt is van példa, itt bővebb magyarázat is (ld. 4. pont).

    Kérdezz, ha elakadtál.

Új hozzászólás Aktív témák