2009-07-03 158 views
21

我正在使用jQuery將一個POST發送到一個具有div內容的HTML文件。 HTML內容包含表格,輸入,較小的div,我想抓取主DIV的內容並將其發送到數據庫。我能想到的唯一選擇是POST方法,但我不知道我是否可以用它發送純HTML。是否有任何其他選項用於將HTML內容從div發送到PHP文件以插入到MySQL中?jQuery通過POST發送HTML數據

謝謝。

編輯:我現在可以通過jQuery的POST發送完整的HTML數據。但是,來自該DIV的HTML字符會轉換爲特殊字符。例如:「>」將變成「&」;「而當這種情況發生,我的POST數據僅限於其中第一個特殊人物出現,因爲我做我的AJAX POST是這樣的:因爲div_html包含其他「&」字符,以便它會

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

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

使用此代碼是不正常被視爲另一個要發送的POST參數。

任何解決方法?

再次感謝。

回答

44

就你所關心的一旦你用類似.html()的東西「拉出」了內容,它只是一個字符串。您可以測試與

<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> 

警報文本字符串。只要你不把它傳遞給解析器就沒有什麼魔力,它就像任何其他字符串一樣。
沒有什麼能夠阻止您使用.post()將此字符串發送回服務器。

編輯:不要傳遞字符串作爲參數數據到.POST(),但一個對象,像

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

jQuery將處理參數的編碼。
如果你(無論出於何種原因)想要保留你的字符串,你必須用escape()之類的東西來編碼這些值。

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

編輯原創問題。 – 2009-07-03 12:01:31

1

我不明白爲什麼你不應該能夠通過帖子發送html內容。

如果您遇到任何問題,您可能可能會使用某種編碼/解碼 - 但我沒有看到您會這樣做。

+0

原題編輯。 – 2009-07-03 12:02:50

1

如果你想發送任意數量的數據到你的服務器,POST是唯一可靠的方法。 GET也是可能的,但客戶端和服務器只允許有限的URL長度(類似2048個字符)。

+0

編輯原創問題。 – 2009-07-03 12:02:10

0

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

我用什麼ü上面已經回答的技術,它工作正常,但我的問題是我需要生成使用約翰爲文本的PDF conent。我已經能夠回顯傳遞的數據。但得到生成PDF uisng當空以下內容普萊斯檢查

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);