小编典典

jQuery通过POST发送HTML数据

ajax

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

谢谢。

编辑: 我现在能够使用jQuery的POST发送完整的HTML数据。但是,来自该DIV的HTML字符被转换为特殊字符。示例:“>”将变为“>”
并且当发生这种情况时,我的POST数据被限制在第一个特殊字符出现的位置,因为我这样执行ajax POST:

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

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

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

任何解决方法?

再次感谢。


阅读 362

收藏
2020-07-26

共1个答案

小编典典

就您所关心的而言,一旦您使用.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()将此字符串发送回服务器的。

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

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

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

var data = 'id='+ escape(currid) +'&html='+ escape(div_html);
2020-07-26