jQuery通过POST发送HTML数据

时间:2009-07-03 11:18:03

标签: jquery ajax encoding

我正在使用jQuery使用div的HTML内容对PHP文件进行POST。 HTML内容包含表,输入,较小的div,我想获取主DIV的内容并将其发送到数据库。我能想到的唯一选择是POST方法,但我不知道是否可以用它发送纯HTML。是否还有其他选项可以将HTML内容从div发送到PHP文件以插入MySQL?

感谢。

编辑:我现在可以使用jQuery的POST发送完整的HTML数据。但是,我在DIV中的HTML字符会转换为特殊字符。示例:“>”会成为“& gt;”当发生这种情况时,我的POST数据仅限于第一个特殊字符出现的位置,因为我像这样执行我的ajax POST:

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

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

使用此代码不正常,因为div_html包含其他“&”字符,因此它将被视为另一个要发送的POST参数。

有任何解决方法吗?

再次感谢。

4 个答案:

答案 0 :(得分:45)

就你所担心的一旦你用.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>

警报文本是 string 。只要你没有将它传递给解析器就没有任何魔力,它就像任何其他字符串一样。 没有什么阻碍您使用.post()将此字符串发送回服务器。

编辑:不要将字符串作为参数 data 传递给.post(),而是将对象传递给

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

jquery将处理参数的编码 如果您(出于任何原因)想要保留字符串,则必须使用escape()之类的值对值进行编码。

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

答案 1 :(得分:1)

我不明白为什么你不能通过帖子发送html内容。

如果你遇到任何问题,你可能会使用某种编码/解码 - 但我不认为你会这样。

答案 2 :(得分:1)

如果要向服务器发送任意数量的数据,POST是唯一可行的方法。 GET也是可能的,但客户端和服务器只允许有限的URL长度(类似于2048个字符)。

答案 3 :(得分:0)

&#13;
&#13;
jQuery.post(post_url,{ content: "John" } )
	.done(function( data ) {
		 
		 
	});
 
&#13;
&#13;
&#13;

我使用了你上面回答的技术,它工作正常,但我的问题是我需要使用john作为文本生成pdf conent。我已经能够回应传递的数据。但是在生成低于内容的pdf uisng时变得空洞检查

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