jQuery通过POST发送HTML数据

Man*_*era 22 ajax jquery encoding

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

谢谢.

编辑:我现在能够使用jQuery的POST发送完整的HTML数据.但是,我在DIV中的HTML字符会转换为特殊字符.示例:">"将变为">" 当发生这种情况时,我的POST数据仅限于出现第一个特殊字符的位置,因为我像这样执行我的ajax POST:

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

    $.ajax({
          type: "POST",
          url: "file.php",
          data: data,
    .......................
    .......................
Run Code Online (Sandbox Code Playgroud)

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

任何解决方法?

再次感谢.

Vol*_*erK 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

jquery将处理参数的编码.
如果你(无论出于何种原因)想要保留你的字符串,你必须用escape()之类的东西对值进行编码.

var data = 'id='+ escape(currid) +'&html='+ escape(div_html);
Run Code Online (Sandbox Code Playgroud)