簡體   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