2013-02-19 118 views
0

我有一个网页,其中包含一个单击时运行脚本的按钮。该脚本应提交两个文本输入字段的内容,并提交<div>innerHTML,并将contenteditable属性设置为true。问题在于,如果某人投入文字并在输入几个单词后切换为正常字体,则提交的内容将包括之前的所有标记的结尾</b>标记。我通过在被调用的脚本中回应$_POST来解决这个问题。我如何将所有内容传递给脚本?在POST请求中标记被切断后的所有内容

编辑:我的HTML是:

<p>Contents:</p><br/> 
<div contenteditable="true" style="border-style:solid; border-width:1px; background-color:#FFFFFF" id="contents"><br/></div> 
<button onclick="submit_form();">Submit</button> 

而且我的JavaScript:

function submit_form() 
{ 
    var request = new XMLHttpRequest(); 
    request.open("POST", "/path/to/script.php", false); 
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    request.send("file=<?php echo $_GET['file']?>" + "&x=" + document.getElementById("x").value + "&y=" + document.getElementById("y").value + "&contents=" + document.getElementById("results").innerHTML); 
} 
+0

我刚刚在http://jsfiddle.net/arQT2/(使用正确的div id)尝试了这一点,并在我的控制台中查看它告诉我它发布了完整的内容。当你回声$ _POST时,你如何做到这一点,以及你如何查看其内容? – Popnoodles 2013-02-19 20:06:46

+0

@popnoodles我不知道它如何没有发布完整的内容。它现在突然正常工作。没关系。 – 2013-02-20 01:36:55

回答

0

,你可以简单地调用javascript函数摆脱的标签,同时提交:

function cleanText(str) { 
    return String(str).replace(/\<[^\>]*>/g, ''); 
} 

或者您也需要传递标签:

function htmlEntities(str) { 
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); 
} 
+0

我实际上需要提交标签,而不是HTML实体。我使用'contenteditable' div的原因是网站的用户可以看到他们的帖子将如何格式化。 – 2013-02-19 18:14:39

+1

然后将它们转换回来,当你收到它们。 – Popnoodles 2013-02-19 19:58:44