Secret

jQuery Italia - Forum » Supporto ed Aiuto » Problemi con jQuery

jQuery / ajax - Inviare dati via post

(25 articoli)
  1. Angelo
    Membro

    Ciao a tutti, dovrei inviare dei dati via post però mi da un blocco cioè dopo un certo numero di caratteri non mi fa inviare...

    Codice:
    function Sender(){
    var news = $("#input").val();
    $.ajax({
    type: "POST",
    url: "sender.php",
    data: "mess="+mess,
    cache: false,
    success: function(html){
    }});
    }

    Sapete dirmi dove sbaglio...
    Vi ringrazio anticipatamente...

    Pubblicato 10 months fa #
  2. jqueryitalia
    Amministratore

    Ciao Angelo e benvenuto.

    L'errore è semplice: hai chiamato 'news' il valore del campo input, mentre alla chiamata ajax passi il valore 'mess' che non è settato da nessuna parte ;-)

    Pubblicato 10 months fa #
    Magical rainbow ponies
  3. Angelo
    Membro

    Grazie, no scusa ho sbagliato a scrivere io...

    Codice:
    function Sender(){
    var mess = $("#input").val();
    $.ajax({
    type: "POST",
    url: "sender.php",
    data: "mess="+mess,
    cache: false,
    success: function(html){
    }});
    }

    Non mi fa inviare dopo un certo numero di caratteri e lo stesso vale con get....
    Cosa sbaglio...
    =)

    Pubblicato 10 months fa #
  4. jqueryitalia
    Amministratore

    =D

    Prova ad inserire un alert prima della chiamata ajax e controlla se il testo c'è tutto.

    Scrivi:
    alert(mess);

    prima di:
    $.ajax({...

    Pubblicato 10 months fa #
  5. Angelo
    Membro

    Lo provato l'alert mostra tutto il messaggio ma non lo invia...

    Pubblicato 10 months fa #
  6. jqueryitalia
    Amministratore

    OK, il testo viene passato tutto.
    Mi poi dire cosa fa il file sender.php e soprattutto cosa ti ritorna?
    Inoltre la funzione di callback success è vuota o_O

    Pubblicato 10 months fa #
  7. Angelo
    Membro

    Ho una textbox dove scritto il testo che mi interessa, tramite un pulsante richiamo la funzione e tramite jquery invia via post il testo contenuto nella texbox...
    La cosa bella è che con testi non molto lunghi funziona, con testi un pò più lunghi si blocca non invia il testo, avevo sentito parlare di questa cosa ma sapevo di questo blocco solo da parte del jquery via get e non via post...
    =)

    Pubblicato 10 months fa #
  8. jqueryitalia
    Amministratore

    Secondo me l'errore non è dovuto a jQuery: quella chiamata l'ho usata spessissimo senza mai avere problemi.

    Continuo a non capire cosa intendi per 'non invia il testo': a chi lo deve inviare? A sender.php? Se si, cosa fa sender.php: salva in un DB o cos'altro?

    Pubblicato 9 months fa #
  9. Angelo
    Membro

    si,sender.php salva nel db il testo, pero con testi brevi funziona...

    Pubblicato 9 months fa #
  10. jqueryitalia
    Amministratore

    OK.
    Nel DB come hai impostato il campo dove viene salvato il testo?
    Come VARCHAR o come TEXT?

    Pubblicato 9 months fa #
  11. Angelo
    Membro

    Text

    Pubblicato 9 months fa #
  12. jqueryitalia
    Amministratore

    Tendo a supporre che l'errore sia nel file sender.php.
    Infatti ho creato una pagina di test con il tuo codice, questa:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT">
    <head>
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
    <script type='text/javascript'>
    function Sender(){
    var mess = $("#input").val();
    $.ajax({
    type: 'POST',
    url: 'sender.php',
    data: 'mess='+mess,
    cache: false,
    success: function(result){
    $("#formresult").html(result);
    }
    });
    }
    </script>
    </head>

    <body>
    <form name="formtext" action="javascript:;">
    <textarea id="input" value=""></textarea>

    <input type="button" onclick="Sender();" value="invia">
    </form>
    <div id="formresult"></div>
    </body>
    </html>

    ed una pagina di ricezione (la tua sender.php) che si limita a stampare il dato ricevuto in post:

    <?php echo $_POST['mess']; ?>

    Ho modificato lo script con la chiamata ajax in modo che, in caso di successo, stampi il valore del post nel div formresult.

    Ho poi eseguito un test inserendo nella texarea un testo formato da 3.411 caratteri che mi è stato restituito in maniera corretta.

    Se vuoi, prova ad inserire il codice del tuo file sender.php che vedo se posso aiutarti a risolvere il problema.

    Pubblicato 9 months fa #
  13. Angelo
    Membro

    Ho fatto la prova ha stampare e funziona, ma il messaggio non viene inviato al db...

    CREATE TABLE IF NOT EXISTS mess (
    id int(11) NOT NULL AUTO_INCREMENT,
    date int(11) NOT NULL DEFAULT '0',
    message text NOT NULL,
    PRIMARY KEY (id),
    FULLTEXT KEY message (message)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    Pubblicato 9 months fa #
  14. jqueryitalia
    Amministratore

    Creata la tabella e rieseguita la prova a me funziona tutto in maniera corretta.

    Questo il codice del mio sender.php:

    <?php
    $message = $_POST['mess'];
    $date = time();

    $link = mysql_connect('localhost', 'DBUSER', 'DBPASSWORD');
    if (!$link) {
    echo 'Could not connect to DB. Error: '.mysql_error();
    die();
    }

    $db_selected = mysql_select_db('DBTABLE', $link);
    if (!$db_selected) {
    echo "Can't use table 'DBTABLE'. Error: ".mysql_error();
    die();
    }

    $query = "INSERT mess SET ";
    $query .= "date = ".$date.", ";
    $query .= "message = '".$message."'";

    $result = mysql_query($query);
    if (!$result) {
    echo 'Invalid query. Error: '. mysql_error();
    die();
    } else {
    echo 'Message insert!';
    }
    ?>

    Ovviamente devi sostituire DBUSER, DBPASSWORD e DBTABLE con i tuoi valori ;-)

    Pubblicato 9 months fa #
  15. Angelo
    Membro

    Ci ho provato ma non capisco cosa non funziona...

    Pubblicato 9 months fa #
  16. jqueryitalia
    Amministratore

    Dato per scontato che l'errore non è generato da jQuery, hai 2 possibili soluzioni:
    - usi il 'mio' sender.php';
    - inserisci qui il codice del tuo sender.php che ci dò un'occhiata.

    Mi viene poi in mente un'altra cosa che potrebbe aiutarti: prova ad inserire a mano la query che esegui attraverso phpmyadmin e controlla se genera qualche errore ;-)

    Pubblicato 9 months fa #
  17. Angelo
    Membro

    Ho capito nel testo che copiavo c'era un apice singolo, per questo non mi faceva inviare il testo, secondo te ce qualche modo che posso fare invece di convertire il testo in asci per i caratteri speciali.. xD

    Pubblicato 9 months fa #
  18. jqueryitalia
    Amministratore

    Crea le pagine in formato UTF8 senza BOM (puoi farlo editandole con l'editor free notepad++) ed imposta anche il db in UTF8.
    In questo modo non avrai nessuna necessità di conversione ;-)

    Pubblicato 9 months fa #
  19. Angelo
    Membro

    Sto avvengo problemi con la codifica del caratteri accentati, ho provato a metter utf-8
    ma non funziona....

    Pubblicato 9 months fa #
  20. jqueryitalia
    Amministratore

    Non è che non funziona, è che probabilmente stai sbagliando qualche cosa... ;-)

    Dove hai problemi nella codifica dei caratteri accentati?
    Nella pagina o nel dato salvato nel DB?

    Pubblicato 9 months fa #
  21. Angelo
    Membro

    Ho una pagina php dove ho messo dei caratteri accentati, poi con jquery li metto in un div ma non funziona...

    Pubblicato 9 months fa #
  22. jqueryitalia
    Amministratore

    Hai codificato la pagina in utf-8?

    Pubblicato 9 months fa #
  23. Angelo
    Membro

    si, ma non funziona lo stesso... xD

    Pubblicato 9 months fa #
  24. jqueryitalia
    Amministratore

    Io domani parto per le ferie... =P

    Se non hai fretta per fine mese ti invio via mail il pacchetto funzionante.
    Fammi sapere ;-)

    Pubblicato 9 months fa #
  25. Angelo
    Membro

    Va bene...
    Buone Vacanze... xD

    Pubblicato 9 months fa #

RSS feed for this topic

Replica

Devi aver fatto il login per poter pubblicare articoli.