我正在使用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参数。
有任何解决方法吗?
再次感谢。
答案 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)
jQuery.post(post_url,{ content: "John" } )
.done(function( data ) {
});
&#13;
我使用了你上面回答的技术,它工作正常,但我的问题是我需要使用john作为文本生成pdf conent。我已经能够回应传递的数据。但是在生成低于内容的pdf uisng时变得空洞检查
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;