Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    [jQuery] -> Catturare un link creato da una chiamata Ajax

    Ciao a tutti,

    il mio problema di oggi:

    Attraverso una chiamata ajax con jQuery
    Codice PHP:
        $("select").change(function(){
            $.ajax({
               type: "POST",
               url: "<?=site_url('admin/search_engine/search_entries')?>",
               data: "nameCat="+$("#selectCategoriesSearch").attr('id')+"&valueCat="+$("#selectCategoriesSearch").val()",
               dataType: 'json',
               success: function(data){
                       $("#tableDetails").html(data.results);
                    $("#paginationCell").html(data.pagination);
               }
            });
            
        });
    Ricavo una stringa JSon che tra gli altri riporta:

    Codice PHP:
    results"HTML VARIO"pagination"

    [b]1[/b]<a href=\"http://xxxx/admin/search_engine/search_entries/8

    \">2</a><a href=\"http://xxxx/admin/search_engine/search_entries/8\">&rsaquo

    ;</a>" 

    I dati ricavati vengono visualizzati nella pagina correttamente, in modo particolare pagination viene inserito in una cella di una tabella avente id #paginationCell.

    Ora, cliccando su uno di questi link creati dovrei far partire un'altra chiamata ajax, ma non sono riuscito a catturare il click su nessuno dei link.

    Mi dareste una mano?

    Grazie
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  2. #2
    La cosa migliore e prendere i link una volta creati e settare l'evento onclick. Nell'esempio la chiamata ajax parte con l'url contenuto nell'href del link; sta a te modificare lo script in modo da adattarlo alle tue esigenze
    codice:
        $("select").change(function(){
            $.ajax({
               type: "POST",
               url: "<?=site_url('admin/search_engine/search_entries')?>",
               data: "nameCat="+$("#selectCategoriesSearch").attr('id')+"&valueCat="+$("#selectCategoriesSearch").val()",
               dataType: 'json',
               success: function(data){
                       $("#tableDetails").html(data.results);
                    $("#paginationCell").html(data.pagination);
                    $("#paginationCell a").click(function() {
                        $.ajax({
                          'url': this.href, //ecc...
                        })
                    })
               }
            });
            
        });
    Attenzione però, non l'ho testato...

  3. #3
    Va bene, grazie per la dritta.

    Ora ci provo e magari faccio sapere... se non riesco faccio altro che ricavare la mia stringa json in questo modo Link

    Spero però di poter risolvere come hai suggerito tu.
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  4. #4
    No, questa soluzione non funziona. O meglio.

    Praticamente firebug mi segnala che la pagina che sto cercando di richiamare non esiste (avete presente la stringa rosso fuoco?!), quando invece esiste eccome!

    Non capisco il motivo! Forse due chiamate ajax non possono stare una dentro l'altra?

    Quello che sto cercando di fare è una cosa piuttosto banale.

    Ho dei risultati di una query in una tabella. Al top della tabella alcuni campi select permettono all'utente di filtrare i risultati, attraverso una chiamata ajax stampo nella tabella i valori filtrati.

    Allo stesso tempo, cambio al volo la paginazione dei risultati (se senza filtri avevo n pagine ora con i filtri ne avrò k).

    Ecco, ora il mio utente clicca su uno dei link della paginazione e io devo fare un'altra chiamata ajax per presentare al volo i nuovi risultati...
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  5. #5
    Perchè ti fai ritornare html
    quando usi json ?

    non so se l'hai messo ma devi mettere un return false;
    nel click.


    Non capisco il motivo! Forse due chiamate ajax non possono stare una dentro l'altra?
    Ho fatto una veloce prova e non ci sono problemi.

    L'hai fatto un po di debug ?


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Allora ragazzi, riesumo il post (grazie Wisher):

    Ho una <table> con alcuni risultati, più o meno una cosa del genere:

    Codice PHP:
    <tr>
        <
    td>15126</td>
        <
    td>[img]immagine[/img]</td>
        <
    td>Info 1</td>
        <
    td>Info 2</td>
        <
    td>Titolo</td>
        <
    td>Tipologia</td>
        <
    td>Info 3</td>
        <
    td>Info 4</td>
        <
    td>Data 1</td>
        <
    td>Data 2</td>
        <
    td>Info 5</td>
        <
    td>Modifica Elimina</td>
      </
    tr
    Al top della tabella ho alcune select che mi permettono di filtrare i risultati
    Codice PHP:
    <tr>
      <
    td colspan="2"></td>
      <
    td>
      <
    select class="searchTable" id="selectContractSearch">
      <
    option value="NULL" selected="selected">----------</option>
      <
    option value="1">Opzione 1</option>
      <
    option value="2">Opzione 2</option>  
      </
    select>
      </
    td>
      
      <
    td></td>
      <
    td>
      <
    select class="searchTable" id="selectCategoriesSearch">
      <
    option value="NULL" selected="selected">----------------------</option>
      <
    option value="10">Opzione 1</option>
      <
    option value="8">Opzione 2</option>
      <
    option value="7">Opzione 3</option>
      </
    select>
      </
    td>
      [...]
      </
    tr
    Quando seleziono un opzione dalle mie "tendine" succede questo:
    Codice PHP:
        $(":input").change(function(){
            $.blockUI(messageElement);
            // blocca durante la chimata ajax
            $.ajax({
               type: "POST",
               url: "<?=site_url('admin/search_engine/search_entries')?>",
               data: "nameCat="+$("#selectCategoriesSearch").attr('id')+"&valueCat="+$("#selectCategoriesSearch").val()+"&nameType="+$("#selectTypologiesSearch").attr('id')+"&valueType="+$("#selectTypologiesSearch").val()+"&nameContract="+$("#selectContractSearch").attr('id')+"&valueContract="+$("#selectContractSearch").val()+"&nameTitle="+$("#inputTitleSearch").attr('id')+"&valueTitle="+$("#inputTitleSearch").val()+"",
               dataType: 'json',
               success: function(data){
                       $("#tableDetails").html(data.results);
                    $("#paginationCell").html(data.pagination);
                            $("#totalEntries").html(data.totalrows);
               }
            });
            $.unblockUI();
        });
    Fino qui tutto funge, ritorno una stringa jSon di questo tipo:

    Codice PHP:
     results"<tr>
    <td>15136</td>
    <td><img src=\"immagine\" /></td>
    <td>Info1</td>
    <td>Info2</td>
    <td>Info3</td>
    <td>Info 4</td>
    <td>Info5</td>
    <td>Milano</td>
    <td>Data 1</td>
    <td>Data 2</td>
    <td>Info 6</td>
    <td Modifica | Elimina</td>
    </tr>"
    pagination"1<a href=\"2\">2</a>
    <a href=\"3\">3</a>"
    totalrows"3" 
    Quindi ora mi ritrovo la tabella modificata con le nuove righe derivanti dal filtro dell'utente e con la nuova paginazione, sempre derivante dal filtro.

    Bene, ora vorrei che cliccando sulla pagina numero 2 attraverso i link creati in pagination partisse una nuova chiamata ajax che cambiasse nuovamente i risultati della tabella, tenendo conto dei filtri.

    Lunghetto eh? Sorry.
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  7. #7
    Codice PHP:
     url: "<?=site_url('admin/search_engine/search_entries')?>",
    non so come sia implementata site_url ma ad occhio
    se non fai un echo in url non c'è niente
    non usare i short tags sono ormai preistoria

    La soluzione di Mega69 (naturalmente devi aggiungere un return false all'onclick) funziona quindi ci deve
    essere qualcosa d'altro che non va come detto
    prima se non fai un po di debug non ne esci.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    No, in url viene stampato il path corretto (uso CI framework, ecco il significato di site_url).

    Ora riprovo con la soluzione di Mega69...
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  9. #9
    Rieccomi ragazzi,

    allora comincia a funzionare, ma ho ancora un problema:

    il codice js è diventato questo, non so se sia giusto scrivere così ma non sono molto pratico di js come avrete capito:

    Codice PHP:
        $(":input").change(function(){
            $.blockUI(messageElement);
            // blocca durante la chiamata ajax
            $.ajax({
               type: "POST",
               url: "<?=site_url('admin/search_engine/search_entries')?>",
               data: "nameCat="+$("#selectCategoriesSearch").attr('id')+"&valueCat="+$("#selectCategoriesSearch").val()+"&nameType="+$("#selectTypologiesSearch").attr('id')+"&valueType="+$("#selectTypologiesSearch").val()+"&nameContract="+$("#selectContractSearch").attr('id')+"&valueContract="+$("#selectContractSearch").val()+"&nameTitle="+$("#inputTitleSearch").attr('id')+"&valueTitle="+$("#inputTitleSearch").val()+"",
               dataType: 'json',
               success: function(data){
                       $("#tableDetails").html(data.results);
                    $("#paginationCell").html(data.pagination);
                    $("#totalEntries").html(data.totalrows);
                    
                    $("#paginationCell a").click(function() {
                    $.ajax({
                      type: "POST",
                      url: this.href,
                      data: "nameCat="+$("#selectCategoriesSearch").attr('id')+"&valueCat="+$("#selectCategoriesSearch").val()+"&nameType="+$("#selectTypologiesSearch").attr('id')+"&valueType="+$("#selectTypologiesSearch").val()+"&nameContract="+$("#selectContractSearch").attr('id')+"&valueContract="+$("#selectContractSearch").val()+"&nameTitle="+$("#inputTitleSearch").attr('id')+"&valueTitle="+$("#inputTitleSearch").val()+"",
                        dataType: 'json',
                      success: function(data){
                           $("#tableDetails").html(data.results);
                        $("#paginationCell").html(data.pagination);
                      }
                    })
                      return false;
                    });
               }
            });
            $.unblockUI();
        });
    1. Filtro i risultati -> la tabella viene modificata correttamente in background dalla chiamata ajax

    2. Clicco sul link n della paginazione -> la tabella viene modificata correttamente con i valori giusti

    3. Clicco su link n della paginazione -> il browser visualizza la pagina passata in this.href e stampa il codice della variabile jSon.

    Quindi il codice che ho scritto funziona solo la prima volta. Credo per voi sia semplice trovare l'errore, io non ci sto capendo più nulla...

    Grazie ancora.
    Olio Extravergine d'Oliva Magino
    Prodotti tipici: in vendita olio, pesto ligure e altri prodotti alimentari tradizionali.

  10. #10
    Scusa ma questo

    Codice PHP:
    $(":input"
    che selettore è ?


    Codice PHP:
    $.unblockUI(); 
    a ri-scusa ma perchè uitlizzi questo plug-in ?


    La tua conclusione lascia un po perplessi non si
    capisce se lo script funziona oppure no




    Ps.


    Se lo script è un tuo esercizio vabè
    ma se dovesse andare veramente
    in produzione forse è meglio ripensarlo
    proprio tutto da capo
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.