Heim > Fragen und Antworten > Hauptteil
Vor kurzem entwickle ich einen Rich-Text-Editor. Da Textarea nur Text eingeben kann, habe ich das contenteditable="true"-Attribut von p verwendet, um Rich-Text zu implementieren, der Bilder, Videos usw. einfügen kann.
Aber hier kommt das Problem auf der Formularseite:
<form action="test.php" method="post">
<p contenteditable="true" name="zhengwen"></p>
<input type="submit">
</form>
Wenn Sie dies tun, kann der Inhalt in p überhaupt nicht an die test.php-Seite übermittelt werden und echo $_POST[zhengwen] wird nicht ausgegeben.
Ich bezweifle, dass es überhaupt eingereicht wurde.
Weiß jemand, wie man das Problem löst? Auf der Suche nach einfachen Codes für die Formularübermittlungsseite und die Empfangsseite! ! !
PHP中文网2017-07-04 13:48:04
确实是没提交过去,因为,表单里的提交按钮,只提交表单元素。而<p contenteditable="true">
并非表单元素。
如果要将<p contenteditable="true">
的信息提交过去,需要自己构造POST
请求,我就以jQuery为例:
$('form').submit(function(e) {
e.preventDefault(); // 拦截HTML的默认表单提交
var content = $('p[name=zhengwen]').html();
$.post('....', {zhengwen: content}, functino(data) {
// 成功回调
});
});
当然了,jQuery的POST提交还有好多种写法,比如$.ajax()
等。
PHP端接收时,和平常一样读取$_POST
就可以了。
欧阳克2017-07-04 13:48:04
1、富文本编辑器可以用百度的UEditor
2、正如楼上所说,你可以用ajax来提交,但是这个有一点不好,如果有一百个输入框,难道提交一百个键值对?
3、所以你可以用js的formData对象,图片也可以发送过去,代码如下
$("#submit").click(function() {
var x = new FormData(document.getElementById("frm"));//构造方法里面必须是dom对象
x.append('abc', 123);//追加你的数据
$.ajax({
url: '1.php',
type: 'POST',
data: x,
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false // 告诉jQuery不要去设置Content-Type请求头
})
.success(function(data) {
//代码
});
});
4、也可以用serializeArray函数模拟上面的formData对象,代码如下
var allDatas = $("form").serializeArray();
allDatas.push({name:'data',value: JSON.stringify(你的数据对象)});//追加的格式必须是name,value形式,打印allDatas的格式就知道了!!!
$.post(url,allDatas,function(json){//代码
});