2009-07-03 119 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);