繁体   English   中英

X-editable不更新数据库中的值

[英]X-editable not updating value in database

我在我的php应用程序中使用X-Editable插件来更新我的表的字段并使用POST文件来更新数据库。

这是表单代码:

<table id="restaurant" class="table table-bordered table-striped">
       <tbody>
       <?php 
       echo '
            <tr>
               <td style="width:15%">Restaurant name</td>
               <td style="width:50%"><a href="#" id="name" data-type="text" data-pk="'. escape($arrValues[$i]->r_id) .'" data-name="name" data-placeholder="Required" data-original-title="Enter Restaurant Name" class="editable editable-click" style="display: inline;">'. escape($arrValues[$i]->name) .'</a></td>
               <td style="width:35%"><span class="text-muted">Enter restaurant name.</span></td>
            </tr>';
        ?>
        </tbody>
    </table>

这是我在页面底部使用的X-editable JS:

<script>
jQuery(document).ready(function() {

//initializes all global values and plugin essentials
    FormEditable.init(); 

//below function is only initialized on one field for debug purposes
    $(function(){
        $('#name').editable({
            url: 'post.php'
        });
    });
});
</script>

这是我的Post.php文件的内容:

<?php 
require 'core/init.php';

    $pk = $_POST['pk']; //primary key aka ID
    $name = $_POST['name']; //name of the field
    $value = $_POST['value']; //value of the field

    if (!empty($value)){
        $result = mysql_query('update Restaurants set '.mysql_escape_string($name).'="'.mysql_escape_string($value).'" where r_id = "'.mysql_escape_string($pk).'"');
        print_r($_POST);
    } else {
        header('HTTP 400 Bad Request', true, 400);
        echo "This field is required!";
    }

?>

当我更新应用程序中的字段时,DOM中的值会更改,但数据库中的值不会更新。 这是我第一次使用X-Editable插件而且我在JS AJAX调用中不是很强。 有人可以让我知道如何调试这个并弄清楚为什么我的价值没有被推送到数据库。

任何帮助将不胜感激。

要正确调试,您可以使用浏览器控制台! 特别是“网络”选项卡在调试时非常有用。

您成功包含了脚本,使用了正确的标记,以便更改DOM。 现在,调试的下一步是确保将ajax请求(推送数据)发送到post.php。

要发送一些东西你需要设置ajaxOptions put ,如下所示:

 $('#name').editable({
   type: 'text',
   url: 'post.php',
   ajaxOptions: {
     type: 'put'
   }   
 });

您可以通过检查控制台的“网络”选项卡来调试Ajax请求。 在编辑字段之前打开网络控制台。 然后编辑它并观察出现在控制台中的新请求。 通过单击控制台中的日志条目,您可以看到从浏览器发送到脚本的数据。

在你的post.php中你可以添加一个var_dump($ _ POST); 看到所有传入的参数。

只是改变

ajaxOptions: {
     type: 'put'
   }  

ajaxOptions: {
     type: 'POST'
   }   

并像往常一样让你的PHP准备好更新mysql。

这个问题是由mockjax插件引起的,该插件用不同的url覆盖了ajax函数。 当我从页面中删除所有mockjax引用时,问题得到了解决。

谢谢Jens-Andre Koch的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM