我正在尝试将数据从 contentEditable div 保存到 mySql 数据库。但似乎'+'符号不能存储在数据库中。这是正确的概念还是我遗漏了什么?
索引.php
<div id="la_sent" contentEditable=true></div>
<button class="saveChanges">Save changes</button>
脚本.js
$(document).ready(function(){
$( ".saveChanges" ).click(function() {
content = $('#la_sent').html();
dataUrl = "iid=1&content="+content;
$.ajax({
url:"ajax.php",
type:"POST",
data:dataUrl,
success:function(data){
...
}});
});
});
ajax.php
$type = $_POST['iid'];
$content = $_POST['content'];
$mysqli=connect_database(); //connection to database
$stmt = $mysqli->prepare('UPDATE email_structure SET content = ? WHERE type = ?');
$stmt->bind_param('ss', $content, $type);
$ress = $stmt->execute();
$stmt->close();
$mysqli->close();
echo "OK";
例如:如果我在 div 元素字符串 'a+b+c' 中写入,它会在 DB 字符串 'a b c ' 中添加。知道为什么吗?
最佳答案
默认情况下,加号会被替换为空格,因此您必须先对它们进行编码。
encodeUriComponent是用 javascript 实现的一种方法
因此,编辑您的 script.js
以通过 encodeURIComponent
传递 content
变量,然后再将其附加到 datUrl
应该可以诀窍。
$(document).ready(function(){
$( ".saveChanges" ).click(function() {
content = $('#la_sent').html();
dataUrl = "iid=1&content="+encodeURIComponent(content); //encode content variable
$.ajax({
url:"ajax.php",
type:"POST",
data:dataUrl,
success:function(data){
...
}});
});
});
关于php - 使用 mysqli 从 contentEditable div 保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33880534/