.ajax() 没有发布到 PHP 数据库查询


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

这对我来说一直是一个持续存在的问题。你们都已经帮了这么多忙。但是,我又被卡住了。我无法让我的.ajax()运行。出于某种原因,如果没有if(field != text)我的.ajax()电话,.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 中更改帖子以获得

成功回调中的第一个和最后一个是什么?