Javascript 如何使用ajax将html值保存到MySQL?

Javascript 如何使用ajax将html值保存到MySQL?,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,我正在尝试动态生成一个HTML表。我只是在用样品测试,但效果不如我预期的好。所以,我在问这个问题。让我向您展示这个简单的表,它是MySQL数据库。我创建了HTML表 我想做的是当我点击某个节点时,比如“250”,这个数字将是可编辑的。编辑后的数据将保存到MySQL数据库中。因此,我使用contenteditable=“true”属性值,当该节点失去焦点时,运行一些JavaScript函数以保存新数据 但是。。。它不好用。老实说,我不知道到底是什么问题。Google chrome抛出了“未捕获的

我正在尝试动态生成一个HTML表。我只是在用样品测试,但效果不如我预期的好。所以,我在问这个问题。让我向您展示这个简单的表,它是MySQL数据库。我创建了HTML表

我想做的是当我点击某个节点时,比如“250”,这个数字将是可编辑的。编辑后的数据将保存到MySQL数据库中。因此,我使用
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的影响。请阅读以下内容: