Javascript 如何使用ajax将html值保存到MySQL?
我正在尝试动态生成一个HTML表。我只是在用样品测试,但效果不如我预期的好。所以,我在问这个问题。让我向您展示这个简单的表,它是MySQL数据库。我创建了HTML表 我想做的是当我点击某个节点时,比如“250”,这个数字将是可编辑的。编辑后的数据将保存到MySQL数据库中。因此,我使用Javascript 如何使用ajax将html值保存到MySQL?,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,我正在尝试动态生成一个HTML表。我只是在用样品测试,但效果不如我预期的好。所以,我在问这个问题。让我向您展示这个简单的表,它是MySQL数据库。我创建了HTML表 我想做的是当我点击某个节点时,比如“250”,这个数字将是可编辑的。编辑后的数据将保存到MySQL数据库中。因此,我使用contenteditable=“true”属性值,当该节点失去焦点时,运行一些JavaScript函数以保存新数据 但是。。。它不好用。老实说,我不知道到底是什么问题。Google chrome抛出了“未捕获的
contenteditable=“true”
属性值,当该节点失去焦点时,运行一些JavaScript函数以保存新数据
但是。。。它不好用。老实说,我不知道到底是什么问题。Google chrome抛出了“未捕获的语法错误,意外的标记}”,但我找不到真正的问题是什么。我是这方面的新手。。。你能找几个人帮我吗
sample.html
<body>
<?php
require_once("db_connect.php");
$sql = "SELECT * FROM test";
$result = $conn->query($sql);
?>
<table border="1" style="border-collapse:collapse;">
<thead>
<tr><th>name</th><th>price</th></tr>
</thead>
<tbody>
<?php
while($row = $result->fetch_assoc()){
echo
"<tr>
<td contenteditable='true' onBlur='saveToDatabase(this,'name','$id')'>{$row['name']}</td>
<td contenteditable='true' onBlur='saveToDatabase(this,'price','$id')'>{$row['price']}</td>
</tr>\n";
}
?>
</tbody>
</table>
<script>
function saveToDatabase(editableObj, column, id) {
$.ajax({
url: "saveedit.php",
type: "POST",
data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
success: function(data){
$(editableObj).css("background","#FDFDFD");
}
});
}
</script>
</body>
</html>
标价
您将其设置为contenteditable,但PHP需要一个参数。比如说
<input type="text" name="parameter">
将作为$\u POST['parameter']发送,但在您的代码中
元素没有名称。所以PHP不知道是否有参数或名称
也许您可以用Javascript编写自己的可编辑函数,如下所示:
function doTextArea(i) {
document.getElementById(i).innerHTML="<input type='text' name='table_value'>ssss.";
}
函数doTextArea(i){
document.getElementById(i).innerHTML=“ssss.”;
}
您的php循环可以是这样的(我假设它是for循环):
对于($i=1;$i您将其设置为contenteditable,但PHP需要一个参数
<input type="text" name="parameter">
将作为$\u POST['parameter']发送,但在代码中元素没有名称。因此PHP不知道是否有参数或名称
也许您可以用Javascript编写自己的可编辑函数,如下所示:
function doTextArea(i) {
document.getElementById(i).innerHTML="<input type='text' name='table_value'>ssss.";
}
函数doTextArea(i){
document.getElementById(i).innerHTML=“ssss.”;
}
您的php循环可以是这样的(我假设它是for循环):
for($i=1;$i我认为onBlur对td
元素不起作用。不管怎么说,使用onBlur='saveToDatabase('name','id')调用它“
将不起作用。您必须在onBlur调用中转义单引号,或者使用转义双引号包围saveToDatabase
调用。它应该是这样的:onBlur=\“saveToDatabase(this,'name','$id')\”
P.s.:无论如何,你都会暴露在SQLinjections中。读这篇文章:我认为onBlur对td
元素不起作用。不管怎样,你用onBlur='saveToDatabase(这个,'name','id')来称呼它“
将不起作用。您必须在onBlur调用中转义单引号,或者在saveToDatabase
调用中使用转义双引号。它应该是这样的:onBlur=\“saveToDatabase(this,'name','id')\”
P.s.:无论如何,您都非常容易受到SQLinjections的影响。请阅读以下内容: