2009-07-03 27 views
21

Sto usando jQuery per creare un POST in un file PHP con il contenuto HTML di un div. Il contenuto HTML contiene tabelle, input, div più piccoli e vorrei prendere il contenuto del DIV principale e inviarlo al database. L'unica opzione che potrei pensare è il metodo POST ma non so se posso inviare un semplice HTML con esso. Ci sono altre opzioni per l'invio di contenuto HTML da un div a un file PHP da inserire in MySQL?jQuery invia dati HTML tramite POST

Grazie.

MODIFICA: Ora sono in grado di inviare dati HTML completi con il POST di jQuery. Tuttavia, i miei caratteri HTML da quel DIV vengono trasformati in caratteri speciali. Esempio: ">" diventerebbe "& gt;" e quando ciò accade, miei dati POST si limita al punto in cui appare il primo carattere speciale perché faccio il mio ajax post come questo:

var data = 'id='+ currid +'&html='+ div_html; 

    $.ajax({ 
      type: "POST", 
      url: "file.php", 
      data: data, 
    ....................... 
    ....................... 

Utilizzando questo codice non è ok perché div_html contiene altre "&" personaggi in modo che sarebbe essere considerato come un altro parametro POST da inviare.

Eventuali soluzioni alternative?

Grazie ancora.

risposta

44

Per quanto ti riguarda una volta che hai "tirato fuori" il contenuto con qualcosa come .html() è solo una stringa. È possibile verificare che, con

<html> 
    <head> 
    <title>runthis</title> 
    <script type="text/javascript" language="javascript" src="jquery-1.3.2.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var x = $("#foo").html(); 
      alert(typeof(x)); 
     }); 
    </script> 
    </head> 
    <body> 
     <div id="foo"><table><tr><td>x</td></tr></table><span>xyz</span></div> 
    </body> 
</html> 

Il testo di allarme è stringa. Finché non lo si passa a un parser non c'è magia, è una stringa come qualsiasi altra stringa.
Non c'è nulla che ti impedisca di utilizzare .post() per inviare questa stringa al server.

modifica: Non passare una stringa come parametro dati a .Pubblicare(), ma un oggetto, come

var data = { 
    id: currid, 
    html: div_html 
}; 
$.post("http://...", data, ...); 

jquery gestirà la codifica dei parametri.
Se (per qualsiasi motivo) si desidera mantenere la stringa, è necessario codificare i valori con qualcosa come escape().

var data = 'id='+ escape(currid) +'&html='+ escape(div_html); 
+0

Domanda originale modificata. –

+0

Risposta originale ampliata – VolkerK

+0

Grazie! Funziona alla grande. –

1

Non vedo perché non si dovrebbe essere in grado di inviare contenuto HTML tramite un post.

se si riscontrano problemi, si potrebbe forse usare un qualche tipo di codifica/decodifica - ma non vedo che lo farai.

+0

domanda originale a cura. –

1

Se si desidera inviare una quantità arbitraria di dati al server, POST è l'unico metodo affidabile per farlo. GET sarebbe anche possibile ma i client e i server consentono solo una lunghezza URL limitata (qualcosa come 2048 caratteri).

+0

Domanda originale modificata. –

0

jQuery.post(post_url,{ content: "John" }) 
 
\t .done(function(data) { 
 
\t \t 
 
\t \t 
 
\t }); 
 

ho usato la tecnica che u hanno risposto sopra, funziona benissimo, ma il mio problema è che ho bisogno di generare un conent pdf con John come testo. Sono stato in grado di echeggiare i dati passati.ma ottenere vuoto durante la generazione pdf uisng sotto ples contenuti controllare

ob_start(); 
 
\t \t \t \t \t \t 
 
\t \t \t include_once(JPATH_SITE .'/components/com_gaevents/pdfgenerator.php'); 
 
\t \t \t $content = ob_get_clean(); 
 
\t \t \t 
 
\t \t 
 
\t \t 
 
\t \t \t $test = $_SESSION['content'] ; 
 
\t 
 
\t \t \t require_once(JPATH_SITE.'/html2pdf/html2pdf.class.php'); 
 
      $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8',0); \t \t \t 
 
\t \t \t \t $html2pdf->setDefaultFont('Arial'); 
 
\t \t \t \t $html2pdf->WriteHTML($test);

Problemi correlati