Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    JQuery/Ajax che non funziona

    Ho questo codice:
    codice:
    $("#newslett").submit(function(event){var destcont = $("#sub").attr("data-div");
    event.preventDefault(); 
        var post_url = $(this).attr("action");
        var request_method = $(this).attr("method");
        var form_data = $(this).serialize();
        $.ajax({
            url : post_url,
            type: request_method,
            data : form_data
        }).done(function(response){ 
           $(destcont).html(response);
        });
    });

    ma quando clicco su submit invece di caricare i dati restituiti dalla chiamata Ajax, va alla pagina di destinazione.
    Eppure non riesco a vedere l'errore - che evidentemente c'è...
    metatad
    graphic & web design

  2. #2
    Attendi il caricamento della pagina prima di assegnare l'evento submit?
    Verifica anche che nella console non ci siano altri errori js che bloccano l'esecuzione degli script.

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Quello script non è sufficiente per capire dove sta il problema. E' possibile che quella funzione non sia nemmeno eseguita, dal momento che il preventDefault (che dovrebbe impedire la normale azione del submit) non ha effetto, ma senza vederne il contesto è difficile capire cosa sta andando storto.

    Posso solo fare qualche ipotesi:
    - Hai scritto il selettore $("#newslett") in modo sbagliato; non corrisponde all'id dell'elemento in questione => L'applicazione del metodo submit() va a vuoto.

    - Non sai che il metodo submit() si applica all'elemento form, magari tu lo stai applicando al pulsante submit del form => La funzione chiaramente non viene eseguita.

    - Hai usato id duplicati sul codice HTML e newslett è uno di questi => JavaScript non sa che pesci pigliare.

    - Stai eseguendo quello script prima che la pagina sia pronta (ad esempio, dentro <head> ma fuori dal ready di jQuery), come suggeriva lucavizzi => L'elemento non viene trovato e il metodo non è applicato.

    Ovviamente sono solo delle ipotetiche panoramiche più o meno probabili ma, non avendo la sfera di cristallo, la lista potrebbe andare avanti in modo inconcludente.

    Vedi se la tua situazione può ricadere su una di queste ipotesi, altrimenti fornisci maggiori dettagli e/o, se possibile, posta un link alla pagina pubblica in questione.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Purtroppo nessuna delle ipotesi avanzate corrisponde, ed ho naturalmente verificato...
    In effetti, sembra non eseguire alcuna istruzione (ho messo un alert che non viene eseguito).
    Faccio qualche altro tentativo di capire, poi eventualmente posto un link...
    Thanks
    metatad
    graphic & web design

  5. #5
    Utente di HTML.it L'avatar di Nexus0100
    Registrato dal
    Aug 2016
    residenza
    Firenze
    Messaggi
    83
    Quote Originariamente inviata da metatad Visualizza il messaggio
    Ho questo codice:
    codice:
    $("#newslett").submit(function(event){var destcont = $("#sub").attr("data-div");
    event.preventDefault(); 
        var post_url = $(this).attr("action");
        var request_method = $(this).attr("method");
        var form_data = $(this).serialize();
        $.ajax({
            url : post_url,
            type: request_method,
            data : form_data
        }).done(function(response){ 
           $(destcont).html(response);
        });
    });

    ma quando clicco su submit invece di caricare i dati restituiti dalla chiamata Ajax, va alla pagina di destinazione.
    Eppure non riesco a vedere l'errore - che evidentemente c'è...
    Non so se sia il problema ma volevo farti notare che è errata la dichiarazione del metodo Ajax, se noti definisci il metodo della chiamata con type, invece dovrebbe essere "method", in oltre al posto di usare il .done potresti usare l'attributo successo direttamente annodato all'interno della chiamata ajax. Inoltre non credo che neanche l'uso di serialize sia corretto in quanto (per quel che so) all'attributo data devo passare un JSON, poi può darsi mi sbagli, facci sapere
    Al mondo, non c'è niente di tanto potente quanto uno script ad hoc...
    Scripting and development, a parallel world.
    La follia è solo l'ingrediente che ti permette di essere geniale...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    In realtà, il problema era qui:
    codice:
    var destcont = $("#sub").attr("data-div");
    Per qualche ragione, non leggeva l'attributo di data-div; ho risolto mettendo il valore in un campo hidden.
    metatad
    graphic & web design

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Per qualche ragione, non leggeva l'attributo di data-div;
    Bah.. bisognerebbe capire se $("#sub") stava restituendo l'elemento desiderato e cosa c'era esattamente dentro quell'attributo data, dal momento che poi quel valore lo utilizzavi come selettore jQuery.

    Sono convinto che fosse una stupidata, ma senza vedere il resto del codice è pressoché impossibile risalire alla/e causa/e del problema (come già detto sopra)

    Ad ogni modo, buon per te che hai risolto in diversa maniera.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.