Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    23

    Ajax, metodo post e limite stringhe

    Salve a tutti,

    uso ajax da un pò, ma ora mi sono imbattuto in un problema con il metodo post. Io di solito uso il metodo get, ma post è comodo per inviare i dati di un form.

    In pratica ho un form con almeno una 15ina di campi. Alcuni numerici ma altri sono testo. Come spesso si fa, si cerca su Google e ho scoperto a malincuore che esiste un limite di stringa da passare. Percui se passo una stringa in ajax troppo lunga, mi viene tagliata. Pertanto sono obbliigato almeno a passare i vari campi in maniera separata. Tutti gli esempi che ho trovato inviano i dati quasi allo stesso modo sia che siano in get che in post e cioè scorrono in un form e creano una stringa da inviare alla pagina ricevente. A me invece serve si ciclare nel form, ma inviare separatamente i valori.

    Si può fare? E se si, nella pagina php ricevente, che ci scrivo per poter ricevere i valori? Avete qualche esempio da mostrare?

    Grazie!

  2. #2
    Beh... se tu ad ogni record che va a database inserisci un'id puoi riutilizzare quell'id.

    Diciamo che hai i tuoi 15 campi.

    Alla prima chiamata ne invii 8, ma sai che a php per poterlo mettere sul database serve riempire, anche se in forma fasulla i campi restanti. Dunque li riempiamo con porcheria creata a monte.
    "-" oppure "0" per i numeri. Qui si usa l'insert.

    Alla seconda chiamata (abbiamo un totale di 15 campi) dovremmo passare 7 campi. In realtà ne passiamo 8, quello in più è l'id identificativo, ora ci basta usare una query di tipo UPDATE e modifichiamo i dati fasulli generati durante l'insert con i dati giusti dell'id identificativo che ci stiamo passando.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    23
    Azz che metodo sporco...

    Speravo ci fosse un metodo per inviarli separatamente.
    Della serie(so che il ciclo è erato, serve spero a rendere l'idea):

    var id=document.getElementById("id");
    var campo;

    for (i=0; i<numcampiform; i++) {
    var campo=document.getElementById(i);
    str="id="+id.value+"&"+campo.name+"="+campo.value;
    invio dato alla pagina php
    }
    istruzione di chiusura invio

    una volta chiuso il send la pagina che elabora effettua query. Oppure anche se li invia uno ad uno va bene uguale purchè siano campi distinti e non i primi 8 e i secondi 7 perchè se il limite esiste, se mi capita una tab con 2 textarea, mi sparo

    Che ne pensi?

    Grazie.

  4. #4
    Io ti ho fatto l'esempio di due chiamate

    Considera che non è un metodo sporchissimo... esiste di peggio volendo

    Tu su 15 campi che devi dare puoi fare anche 15 chiamate, ma tutte devono avere l'id che vuoi creare e la prima chiamata deve generare un'insert, riempiendo tutti gli altri campi, le chiamate successive hanno due dati. L'id identifivativo ed il dato per l'update. Se ti crei delle funzioni, sia in php che in Js puoi far il sistema quasi in automatico. Ma solo tu sai quali dati possono andare oltre certi limiti e quali no.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    23
    OK...

    ci provo e vedo se riesco a farlo funzionare.

    Solo una cosa ti chiedo aggiuntiva. Se dovesse capitare di dover passare un id che però si genera all'atto di un primo inserimento. Io faccio l'insert e richiedo il "last_id" nella pagina php, ma poi come lo ripasso al codice in javascript per farlo integrare nei futuri invii?

    Grazie ancora.

  6. #6
    Con una chiamata ajax

    La pagina php esegue del codice e te lo rimanda in output "a livello teorico", in realtà è leggermente diverso.

    http://javascript.html.it/guide/leggi/95/guida-ajax/

    Questa è la guida su html.it di Ajax, magari ti può aiutare

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.