Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58

    Problema chiamata ajax con jquery

    Salve a tutti, ho un problema con una chiamata ajax fatta con jquery.
    Il codice è questo:

    Codice PHP:
      <script type="text/javascript">

        $(
    '#nomediv').click(function(event){

          $.
    ajax({  
            
    url"pagina.php",  
            
    type"POST",  
            
    data:  ({dato1 : $('#dato1').val(), dato2: $('#dato2').val()}),
            
    dataType"html",
            
    success: function(msg) { 

            if(
    msg != 1){
              $(
    '#nomediv1').html(msg);
              $(
    '#nomediv1').show();
            }else{
              
    parent.funzioneparent();
            }
              
            },
            
    error: function(){
              
    alert("ERROR!");
            } 
          }); 
          
        });

      
    </script> 

    Lo script funziona senza nessun problema, però ha un punto molto debole che vorrei cambiare. Purtroppo non sono molto esperto nè di javascript nè di jquery, avrei quindi bisogno del vostro aiuto.

    Come si può intuire faccio una semplice chiamata ajax inviando due dati tramite post. La pagina che li riceve li elabora. Qui sta il punto che non mi convince. Io ho fatto in modo che, se le variabili inviate soddisfano le mie condizioni allora la pagina stampa "1" con un semplice

    Codice PHP:
    echo "1"
    Se invece le due variabili non soddisfano le mie condizioni viene stampato un messaggio di errore.
    In questo modo controllo se il messaggio è uguale a 1 viene chiamata una funzione, se invece il messaggio è diverso da 1, stampo il messaggio di errore.
    Io ora chiedo se è possibile evitare una soluzione così "sporca".
    Possibile che non ci sia la possibilità di restituire una variabile di controllo o qualcosa del genere?
    Ho letto che è possibile utilizzare anche l'xml con queste chiamate, ma non ho capito se in questo modo posso risolvere il mio problema.

    Grazie a tutti anticipatamente

    CIao

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Boh... io non ci vedo nulla di sporco in quello che fai, e cambiare una query/controllo con xml non ci vedo il nesso e tanto meno cosa centri ajax, jquery e javascript in tutto questo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58
    Semplicemente mi sembra un metodo poco sicuro utilizzare una stampa html come se fosse una variabile. Tutto qui.
    Per quanto riguarda ajax, jquery e javascript, c'entrano solo perchè il codice è scritto in quel linguaggio, niente di più... mentre l'xml non saprei, come ho scritto non ho capito se è utilizzabile per risolvere il problema, ma mi sembra di capire che non lo sia...

    Comunque, dalla risposta, posso pensare che, anche se a me non sembra una buona soluzione, è un metodo accettabile.

    Ti ringrazio.
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    non è questione di sporcizia o che altro, il metodo da te utilizzato va bene ed è anche il meno macchinoso, potresti pure far si che la pagina php ritorni la stringa parsata da json_encode.

    In questo modo allo script javascript arriverebbe non più testo html ma veri e propri oggetti javascript, ma ti posso assicurare che a parte il fatto che scriverai qualcosa in più non otterresti nessun beneficio in termini di sicurezza.

    Tuttavia json_encode si rileva una manna dal cielo quando da una richiesta asincrona ti aspetti che arrivino strutture dati più complesse di una stringa (array associativi e compagnia bella).

    Studiare json e json_encode ti potrà essere molto utile in futuro, ma nello script da te descritto non è di chissà quale utilità.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58
    Ciao, ti ringrazio per la spiegazione. Mi sembra comunque molto interessante, anche se nel caso specifico, per il mio problema, non serve, è sempre bene conoscere questi metodi.
    Mi potresti dire come fa la pagina php a restituire una stringa?
    Cioè faccio stampare semplicemente la stringa come se fosse html e di conseguenza è come se fosse restituita alla funzione javascript, oppure c'è una vera e propria funzione da scrivere che "return" la stringa??
    Forse devo modificare il campo "dataType:" nella mia funzione?

    Grazie

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    nel tuo caso dovrebbe bastare mettere

    Codice PHP:
    dataType"json" 
    Per quanto riguarda il come fa la pagina lato server a restituire una stringa...
    semplicemente dandola in output, infatti la variabile msg non dovrebbe essere altro che le responseText della richiesta asincrona, che a sua volta non è altro che l'output della pagina lato server.

    Tuttavia se vuoi passare dati in formato json devi parsare l'output con il comando json_encode, quindi in php dovresti fare qualcosa del tipo:

    Codice PHP:
    echo json_encode($myString); 
    Ma ripeto la cosa si fa interessante quando myString è una struttura più complessa di una semplice stringa (ad esempio un array associativo ottenuto dai risultati di una query al database).

    A questo punto nella parte javascript msg diventerebbe un vero e prorpio oggetto javascript, come utilizzarlo?

    Guardandone il formato puoi capire con cosa hai a che fare. Per saperne di più dai un'occhiata qui . In particolare nella colonna destra della pagina sono indicate le corrispondenze tra parentesi e ciò che rappersentano (graffe oggetti e quadre array).

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58
    Ottimo, mi sembra tutto molto più chiaro, e alla fine la mia soluzione non mi sembra più così sporca.
    Grazie mille, sono stati consigli preziosi.

    Ciao

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.