in

DotNetMarche

.NET Framework User Group delle Marche

Ajax e JQuery

Last post 01 Apr 2009 2:28 by Diego Guidi. 6 replies.
Page 1 of 1 (7 items)
Sort Posts: Previous Next
  • 01 Apr 2009 1:27

    • matteoc78
    • Top 50 Contributor
    • Joined on 27 Jun 2008
    • Calcinelli
    • Posts 4

    Ajax e JQuery

    Ciao, dopo il corso di venerdi scorso stavo facendo delle prove con JQuery e mi è sorto un dubbio che vi espongo.
    Ho una pagina HTML con 3 div che hanno come id ogg1, ogg2, ogg3
    Volevo fare una chiamata ajax per ogni div, ed il codice che ho scritto è:

    $("div[id^=ogg]").each(function(n){
             $.ajax({
                 url: "p.asp",
                 type: "POST",
                 data: {lng: n+1},
                 dataType: "html",
                 complete: function(data){
                       alert(data.responseText);
                       alert(this.id);
                    },
                 timeout: 2000});
             
             });

    Perchè alert(this.id) mi restituisce sempre "undefined"?
    Come faccio a passargli dinamicamente l'oggetto in cui deve andare a scrivere?

  • 01 Apr 2009 1:56 In reply to

    Re: Ajax e JQuery

    dentro complete this non dovrebbe essere l'elemento del wrappedset

    http://docs.jquery.com/Ajax/jQuery.ajax#options

    function (XMLHttpRequest, textStatus) {
    this; // the options for this ajax request
    }

     prova a referenziare this in una variabile prima della funzione complete e poi usare quella al posto di this, ad esempio

    $("div[id^=ogg]").each(function(n) {
    var self = this;
    $.ajax(

     

  • 01 Apr 2009 1:58 In reply to

    Re: Ajax e JQuery

     Cosi come dice la documentazione, la funzione ajax è una chiamata di "basso livello", ovvero serve quando tu vuoi fare una chiamata ajax e gestire manualmente il contenuto. Tu chiami la funzione $.ajax all'interno di una each, ma la $.ajax non ha nessun collegamento all'oggetto this, per questa ragione nella callback il this non è il div. 

    Quello che tu intendi fare è probabilmente sostituire il contenuto di ogni div con i dati che ti vengono restituiti dalla pagina, questo si fa con la funzione load(), che tra l'altro viene invocata su un wrapped set. Nel tuo caso quindi all'interno della each dovresti fare $(this).load(.... in modo da caricare per ogni elemento i tuoi dati. In questo caso visto che la load viene invocata in un wrapped set, nella callback il "this" viene impostato al valore dell'elemento che si sta caricando.

    Spero di avere chiarito.

    alk.

    --
    Continua ciò che hai cominciato e forse arriverai alla cima, o almeno arriverai in alto ad un punto che tu solo comprenderai non essere la cima. (Seneca)
    Alkampfer's Place
    Filed under:
  • 01 Apr 2009 2:16 In reply to

    Re: Ajax e JQuery

    Diego Guidi:

    dentro complete this non dovrebbe essere l'elemento del wrappedset

    http://docs.jquery.com/Ajax/jQuery.ajax#options

    function (XMLHttpRequest, textStatus) {
    this; // the options for this ajax request
    }

     prova a referenziare this in una variabile prima della funzione complete e poi usare quella al posto di this, ad esempio

    $("div[id^=ogg]").each(function(n) {
    var self = this;
    $.ajax(

     

    Penso che sia possibile aggiungere il this ad una proprietà qualsiasi dell'oggetto option, tanto la chiamata ajax dovrebbe ignorare tutto quello che non capisce, quindi recuperarlo nella callback con this.nomeopzione.id.

    alk.

    --
    Continua ciò che hai cominciato e forse arriverai alla cima, o almeno arriverai in alto ad un punto che tu solo comprenderai non essere la cima. (Seneca)
    Alkampfer's Place
  • 01 Apr 2009 2:24 In reply to

    • matteoc78
    • Top 50 Contributor
    • Joined on 27 Jun 2008
    • Calcinelli
    • Posts 4

    Re: Ajax e JQuery

    Ho provato con la soluzione suggerita da Diego e funziona, quando ho 5 minuti provo anche quella suggerita da Alkampfer.

     Grazie a entrambi.

  • 01 Apr 2009 2:28 In reply to

    Re: Ajax e JQuery

    :) cmq la potenza e la complessità del javascript imho è tutta li, nel this che è quello che vuoi che sia ma magari non è quello che ti aspetti
  • 01 Apr 2009 2:28 In reply to

    Re: Ajax e JQuery

    Alkampfer:

    Diego Guidi:

    dentro complete this non dovrebbe essere l'elemento del wrappedset

    http://docs.jquery.com/Ajax/jQuery.ajax#options

    function (XMLHttpRequest, textStatus) {
    this; // the options for this ajax request
    }

     prova a referenziare this in una variabile prima della funzione complete e poi usare quella al posto di this, ad esempio

    $("div[id^=ogg]").each(function(n) {
    var self = this;
    $.ajax(

     

    Penso che sia possibile aggiungere il this ad una proprietà qualsiasi dell'oggetto option, tanto la chiamata ajax dovrebbe ignorare tutto quello che non capisce, quindi recuperarlo nella callback con this.nomeopzione.id.

    alk.

    come dici te è pure più elegante tra l'altro
Page 1 of 1 (7 items)
Powered by Community Server (Commercial Edition), by Telligent Systems