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

时间:2014-01-26 22:46:57

标签: javascript php jquery x-editable

我在我的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调用中不是很强。有人可以让我知道如何调试这个并找出为什么我的价值没有被推送到数据库。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

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

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

要发送您需要设置 ajaxOptions put 的内容,如下所示:

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

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

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

答案 1 :(得分:1)

改变
ajaxOptions: {
     type: 'put'
   }  

ajaxOptions: {
     type: 'POST'
   }   

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

答案 2 :(得分:0)

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

谢谢Jens-Andre Koch的帮助!