Keresés

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

  • Sk8erPeter

    nagyúr

    válasz estro #3181 üzenetére

    Nyilván ezt a megoldást lehet általánosabbá is tenni, sőt, akár lehetne kliensoldali keretrendszert/library-t is felhasználni a célra, amivel nagy eséllyel sokkal rövidebben is "megfogalmazhatod" kódszinten az igényeidet, ez egy útmutató volt arra, hogy hogyan tudod megoldani azt a konkrét problémát, amire rákérdeztél. Mivel nem fejtetted ki a konkrét igényeket, hogy milyen módon szeretnéd általánosítani, ezt kitalálni magunktól nem tudjuk. :)
    Amúgy hogy most mitől jobb megoldás ennél az, hogy iframe-be töltöd be, az számomra rejtély. :)
    Mindenesetre remélem, ez azért valamennyire segített elindulni az úton.

  • Sk8erPeter

    nagyúr

    válasz estro #3179 üzenetére

    Na, most, hogy picit részletesebben írtál a problémáról, már legalább értem, mi a baj. :) Tehát ezek szerint alapvetően annyiból jól működik a scripted, hogy a form elküldése után betöltődik AJAX-szal a tartalom, de a gond az, hogy mindig ugyanaz az oldal töltődik be, nem teljesül az elvárt feltételed, esetedben mindig a 3.jsp töltődik be. Teljesen jogosan sosem fog teljesülni az if(userID.equals(user)) feltétel, hiszen nem is adod át az űrlapban lévő userName nevű mező értékét a scriptnek, nincs ellátva ilyen query stringgel a lekért URL, tehát a request.getParameter("userName") mindig null-lal fog visszatérni. Szóval akkor a szerveroldal sehonnan nem tudhatja, hogy Te mit is akartál. :)
    Ez esetben két dolgot tudsz tenni: vagy hozzáfűzöd "kézzel" a .load() metódusnak átpasszolt URL-hez a userName query stringet, DE EZT NE (inkább felejtsd el, csak azért említettem, hogy értsd, hogy úgy egyébként működne), sokkal inkább NE a .load() függvényt használd, hanem az .ajax()-ot (vagy valamelyik shorthand-társát).

    Tehát
    $( "#target").submit(function( event ) {
    var page = $(this).attr('action');
    $('#content').load(page);
    event.preventDefault();
    });

    HELYETT

    var $contentContainer = $('#content');

    $("#target").submit(function( event ) {
    var $form = $(this);
    var formActionUrl = $form.attr('action');
    var userNameInput = $form.find('input[name="userName"]').val();

    $.ajax({
    method: "GET",
    url: formActionUrl,
    data: { userName: userNameInput },
    success: function(data, textStatus, jqXHR) {
    $contentContainer.html(data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
    // TODO: értelmesebb hibakezelés
    alert('There was an error when processing the request...');
    }
    });

    event.preventDefault();
    });

    Elgépelés lehet benne, most ezt csak ide pötyörésztem be.
    Elvileg így mennie kell. :)

  • Sk8erPeter

    nagyúr

    válasz estro #3177 üzenetére

    Mi van a success.jsp-ben, meg a 3.jsp-ben? Nehéz ennyiből mit mondani. Először hozz létre akár simán egy szöveges fájlt, amibe beleraksz valami hablaty szöveget, előbb töltse be annak a tartalmát AJAX-szal a linkre kattintás után, ha ez működik, csak azután rakd mögé az üzleti logikát. Ja, és amúgy ne rakd bele mindegyik response-ba a jQuery kódját is.
    Szóval először próbáld leszűkíteni a problémát, és persze nézd a böngésző fejlesztőpaneljén (Ctrl+Shift+I), hogy mi történik.

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

Hirdetés