Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    jquery funzione ajax "generica" per diverse richieste

    salve, la pagina html è così
    codice HTML:
    <ol>
    <li class="item1">numero <span class="anno">1990</span> numero<span class="numero">2</span><span class="sendRequest">send</span>  <div class="result"></div></li>
    <li class="item2">numero <span class="anno">1993</span> numero<span class="numero">24</span><span class="sendRequest">send</span>  <div class="result"></div></li>
    <li class="item3">numero <span class="anno">1994</span> numero<span class="numero">22</span><span class="sendRequest">send</span>  <div class="result"></div></li>
    <ol>
    la funzione ajax è questa (ora come si può vedere funziona su un solo pulsante #sendRequest e su due valori #numero e la select #anno)
    codice:
    $(function () {    $('#sendRequest').on('click', function () {
    
    
        $('#result').html('loading');
            $.ajax({
              url: "ajax.php?search=1&numero="+$("#numero").val()+"&"+"anno="+$( "#anno option:selected" ).text(),
              context: document.body,
              success : function (data,stato) {
                    $("#result").html(data);
                    $("#statoChiamata").text(stato);
                },
                beforeSend: function() {
                $('#result').text('Loading...');
              },
                error : function (richiesta,stato,errori) {
                    alert("E' evvenuto un errore. Il stato della chiamata: "+stato);}
            }).done(function() {
              $( '#result' ).html(data);
            });
        });
    });
    </script>
    dovrei renderla "generica", cioè per ogni span.sendRequest deve prendere i valori anno e numero di quel <li>, fare la chiamata su quei valori e restituire tutto in div.result di quel <li>.
    help mi please

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se lo fai in linea lato server <span class="sendRequest" onclick="tuafunzione(qui fai scrivere dal server i dati che ti servono)">send</span> è relativamente semplice farlo allo onload con jquery è notevolmente più complesso.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    infatti stavo già seguendo la prima soluzione

    mi puoi dire però come definire gli argomenti numero e anno della funzione jquery? se non si fosse capito ancora sono a 0 in jquery

    per capirci quella funzione senza nome deve avere un nome e deve avere firma
    sendRequest(int i, int x)
    Ultima modifica di jimbo0; 28-05-2014 a 13:34

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    ok, il problema l'ho risolto inglobando tutto in una funzione js (non jquery)

    ora però rimane un solo problema:
    codice:
    success : function (data,stato) {                $("#result").html(data);
                    $("#statoChiamata").text(stato);
                },
    questa parte di codice sostituisce #result e #statoChiamata,
    a me servirebbe una cosa tipo $(this).getElementsByClassName('.result')

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    codice:
    a me servirebbe una cosa tipo $(this).getElementsByClassName('.result')
    Cioè? devi recuperare tutti gli elementi con la classe result? se si
    $(".result").html(data);

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    no, .result è il contenitore che deve essere riempito con la risposta della chiamata ajax.
    ora ogni <li> è del tipo:
    codice:
    <li>BLABLA<span class="sendRequest" onclick="sendRequest(10,1990>send</span><span class="result"></span> </li>
    quindi devo riempire span.result con il risultato della chiamata
    servirebbe un riferimento del genere:
    $(this).parent().getElementsByClassName('.result')[0].html(data);

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    hai detto che non stai utilizzando jquery, quindi non puoi fare riferimento a $(this) devi passare in input alla funzione l'elemento che è stato cliccato
    sendRequest(10,1990, this)

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.