簡體   English   中英

.ajax()未發布到php數據庫查詢

[英].ajax() isn't posting to php database query

對我來說,這一直是一個持續的問題。 你們已經提供了很多幫助。 但是,我再次陷入困境。 我無法運行我的.ajax() 由於某種原因, if(field != text)沒有.ajax()調用上方的if(field != text) .click()甚至無法工作,但我離題了。

我的問題是:為什么我的ajax()不能正常運行,並且如果此問題得到解決,在將查詢發送到數據庫后不刷新頁面的情況下,該表是否會顯示更新?

這是我的腳本:

<script type="text/javascript">
    $(document).ready(function()
    {
        $(".edit_td").click(function()
        {
            $(this).children(".text").hide();
            $(this).children(".editbox").show();

        }).children('.editbox').change(function()
            {
                var id=$(this).closest('tr').attr('id');
                var field=$(this).data('field');
                var text=$(this).val();

                var dataString = 'id= '+ id +'&field= '+ field +'&text= '+ text;
                alert("made variables");

                if(field != text)
                {
                    alert("in if");
                    $.ajax({
                    type: "POST",
                    url: "table_edit_ajax.php",
                    data: dataString,
                    cache: false,
                    success: function(html)
                    {
                        $("#first_"+ID).html(first);
                        $("#last_"+ID).html(last);
                    }
                    });
                }
                else
                {
                    alert('Enter something.');
                }
            });

        // Edit input box click action
        $(".editbox").mouseup(function() 
        {
            return false
        });

        // Outside click action
        $(document).mouseup(function()
        {
            $(".editbox").hide();
            $(".text").show();
        });

    });
    </script>

這是我的table_edit_ajax.php

<?php
   //connect to DB
   $con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);

   echo 'in table_edit';

   $id = mysqli_escape_String($_POST['id']);
   $table = "owners";
   $field = mysqli_escape_String($_POST['field']);
   $text = mysqli_escape_String($_POST['text']);
   $query = "UPDATE ".$table." SET ".$field."='".$text."' WHERE ".$table."_id = '".$id."'";
   mysqli_query($query);

   //close connection
   mysqli_close($con);

?>

所有mysqli函數的第一個參數是連接,語句或結果對象。

$id = mysqli_escape_String($con, $_POST['id']);
$table = "owners";
$field = $_POST['field'];
$text = mysqli_escape_String($con, $_POST['text']);
$query = "UPDATE ".$table." SET ".$field."='".$text."' WHERE ".$table."_id = '".$id."'";
mysqli_query($con, $query);

$field不應該轉義,因為它不是字符串值。 因此,您需要仔細驗證它以防止SQL注入。 也許不讓客戶端提交要更新的字段名稱,而是讓他們提交一個整數,您可以在數組中查找該整數以轉換為字段名稱。

在AJAX調用中,由於參數編碼不正確,您可能會遇到問題。 dataString分配更改為:

var dataString = { id: id, field: field, text: text };

然后jQuery將為您編碼。

您正在發送數據字符串

 var dataString = 'id= '+ id +'&field= '+ field +'&text= '+ text;

並通過$ _POST檢索它。

首先檢查$ _POST中的內容,然后使用$ _GET代替$ _POST

並更改ajax中的帖子獲取

什么是成功回調中的第一個和最后一個?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM