【问题标题】:Error in ajax insert databaseajax插入数据库中的错误
【发布时间】:2016-09-19 04:18:27
【问题描述】:

在每一行中,我想添加一个可编辑的 td 以将“mavandon”插入 DATABASE dsdonhang。我在http://phppot.com/php/php-mysql-inline-editing-using-jquery-ajax/ 上读到了这篇文章,但它不起作用:((

<script src="../lib/jquery-3.1.0.min.js"></script>   
<script>
$(document).ready(function(){        
    function saveToDatabase(editableObj,column,idd) {
        $.ajax({
            url: "saveedit.php",
            type: "POST",
data:'column='+$(this).column+'&editval='+$(this).editableObj.innerHTML+'&idd='+$(this).idd,
            success: function(data){
                $(editableObj).css("background","#FDFDFD");
                //alert ("hello");
            }
        error: function() {}    
       });
    }
});        
</script>
<?php $query = mysqli_query($conn,"SELECT * FROM dsdonhang");            
    while($row=mysqli_fetch_assoc($query)) {$data[] = $row;}
    foreach($data as $k=>$v) {
      ?>
        <tr>
          <td><?php $madon = $data[$k]["idd"];echo $k+1; ?></td>
          <td><?php echo $data[$k]["ngaydat"]; ?></td>
          <td><?php echo $data[$k]["hoten"]; ?></td>
          <td><?php echo $data[$k]["diachi"]; ?></td>
          <td><?php echo $data[$k]["sdt1"]; ?></td>
          <td><?php echo $data[$k]["donhang"]; ?></td>
          <td><?php echo $data[$k]["tongtien"]; ?>.000VN&#272;</td>
          <td><?php echo $data[$k]["nguoinhan"]; ?></td>
          <td contenteditable="true" onchange="saveToDatabase(this,'mavandon','<?php echo $madon; ?>')"><?php echo $data[$k]["mavandon"]; ?></td>
          <td><a href="donhang.php?id=<?php echo $data[$k]["idd"]; ?>&tc=<?php echo $data[$k]["sothamchieu"]; ?>">Xem</a></td>
        </tr>
<?php
  }            
?>

保存编辑.php

<?php
require_once("../lib/connection.php");
mysqli_query($conn,"UPDATE dsdonhang set " . $_POST["column"] . " = '".$_POST["editval"]."' WHERE  idd='".$_POST["idd"]."'");
?>

有什么帮助吗?谢谢

【问题讨论】:

  • 你能展示一下dsdonhang表的结构吗?
  • phppot.com/php/php-mysql-inline-editing-using-jquery-ajax 是一个很好的教程。但是你面临什么样的问题。
  • 控制台显示什么?
  • 你可以直接用column代替$(this).column。请参阅该教程。
  • it doesn't working - 不是对问题的有用描述 - 做一些基本的调试,告诉我们什么不工作,你希望发生什么,会发生什么

标签: javascript php ajax


【解决方案1】:

使用onblur 代替onchange

<td contenteditable="true" onblur="saveToDatabase(this,'mavandon','<?php echo $madon; ?>')" onClick="showEdit(this);"><?php echo $data[$k]["mavandon"]; ?></td>

【讨论】:

  • 我使用onchange 而不是onBlur 来避免错误“Uncaught ReferenceError: saveToDatabase is not defined”
  • 是否触发了ajax(在浏览器控制台查看)?
  • 我不知道。如何检查?当我打开控制台选项卡时,没有任何记录
  • 使用 FireFox 浏览器并安装 FireBug 插件。成功安装后按 F12 并在浏览器底部看到一些面板。单击控制台选项卡,然后您可以看到 ajax 调用请求和响应。它会帮助你。
【解决方案2】:

在 ajax 调用中传递参数时输入错误/不正确。如下修改

在ajax调用中添加这个。 '&idd='+idd 而不是这个 '&idd='+$(this).idd

【讨论】:

  • 修改 td :
【解决方案3】:

确保你的事件被调用。(你也可以签入萤火虫。) 传递参数为
{列:$(this).column,editval:$(this).editableObj.innerHTML,idd:$(this).idd}

【讨论】:

    【解决方案4】:

    试试这个:

    <script>
    $(document).ready(function(){        
    function saveToDatabase(editableObj,column,idd) {
         var data = {'column':$(this).column,'editval':$(editableObj).text(),'idd':$(this).idd };
        $.ajax({
            url: "saveedit.php",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            datatType: "json",
            data:JSON.stringify(data),
            success: function(data){
                $(editableObj).css("background","#FDFDFD");
                console.log("received data=>"+data);
                alert ("hello");
            }
        error: function(err) {
           console.log("error=>"+err); //print error if exist
        }    
       });
    }
    });        
    </script>
    

    【讨论】:

    • 有什么警报吗?
    • 你在哪里调用 saveToDatabase(); ?
    • onchange="saveToDatabase(this,'mavandon','&lt;?php echo $madon; ?&gt;')",在第9个
    • Uncaught SyntaxError: Unexpected identifier on line: data:{'column':$(this).column,'editval':$(editableObj).text(),'idd':$(this).idd},
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签