Javascript jQuery$.post未传递所有数据

Javascript jQuery$.post未传递所有数据,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我有一个jQuery$.post脚本,它没有将所有数据传递给它调用的php脚本。当我只向数据字段传递了两个参数时,它工作得很好,但现在我得到的不仅仅是两个参数,它不再工作了。控制台正在显示字段的值,但由于某种原因,数据没有插入到数据库中 HTML表单 <fieldset for="center"> <label>Center:</label> <div class="select" name="center" id="center">

我有一个jQuery$.post脚本,它没有将所有数据传递给它调用的php脚本。当我只向数据字段传递了两个参数时,它工作得很好,但现在我得到的不仅仅是两个参数,它不再工作了。控制台正在显示字段的值,但由于某种原因,数据没有插入到数据库中

HTML表单

<fieldset for="center">
    <label>Center:</label>
    <div class="select" name="center" id="center">
        <div class="arrow"></div>
        <div class="option-menu">
            <?php
                $query = "SELECT * FROM $centers";
                $result = mysqli_query($connect, $query);
                $center_name;
                while($row = mysqli_fetch_assoc($result)){
                    $center_name = "{$row['center']}";
                    echo "<div class='option'>" .$center_name ."</div>";
                }
            ?>
        </div>
    </div>
</fieldset>
<fieldset for="initials">
    <label>Initials:</label>
    <input type="text" name="initials" id="initials" />
</fieldset>
<fieldset for="recurrent">
    <label>Type:</label>
    <div class="select" name="recurrent" id="recurrent">
        <div class="arrow"></div>
        <div class="option-menu">
            <?php
                $query = "SELECT * FROM $recurrent";
                $result = mysqli_query($connect, $query);
                while($row = mysqli_fetch_assoc($result)){
                    $type = "{$row['type']}";
                    echo "<div class='option'>" .$type ."</div>";
                }
            ?>
        </div>
    </div>
</fieldset>
jQuery脚本

ob_start();
require("../includes/header.php");
if($_SERVER["REQUEST_METHOD"] == "POST"){
    $center = $_POST["center"];
    $recurrent = $_POST["recurrent"];
    $initials = $_POST["initials"];
    $query = "INSERT INTO `$scenarios`(`initials`, `center`, `recurrent`) VALUES('" .$initials ."', " .$center ."', '" .$recurrent ."')";

    mysqli_query($connect, $query);
}

    ob_clean();
    echo json_encode(array("success" => 1));
$("input[id='save']").on("click", function(){
    var initials = $("#initials").val();
    var center = $("#center_menu").val();
    var recurrent = $("#recurrent_menu").val();
    console.log(initials);
    console.log(center);
    console.log(recurrent);
    $.post("../php/processing.php", {initials: initials, center: center, recurrent: recurrent}, function(response){
        if(response.success == "1"){
        }
    }, "json");
})

在php脚本中,单引号是错误的单引号类型

更改:

$query = "INSERT INTO `$scenarios`(`initials`, `center`, `recurrent`) VALUES('" .$initials ."', " .$center ."', '" .$recurrent ."')";
$query = "INSERT INTO '$scenarios'('initials', 'center`, 'recurrent') VALUES('" .$initials ."', " .$center ."', '" .$recurrent ."')";
至:

$query = "INSERT INTO `$scenarios`(`initials`, `center`, `recurrent`) VALUES('" .$initials ."', " .$center ."', '" .$recurrent ."')";
$query = "INSERT INTO '$scenarios'('initials', 'center`, 'recurrent') VALUES('" .$initials ."', " .$center ."', '" .$recurrent ."')";

首先,通过写出三个post变量的值来确认您没有得到正确的值。确保这是jquery帖子的问题


如果是jquery问题,哪一个参数没有被传回?

实际上,当您引用表和字段时,您使用的是``,而不是单引号。正如我所说,控制台日志显示值在那里。但是,初始值是“破坏”脚本的值。如果我改变一切,只做center和recurtive,数据库字段会被填充,但是控制台只显示jquery看到的内容。在php端添加一些输出以查看恢复的内容。啊,是的,我看到“$center”前面缺少一个引号。是的,这就是问题的原因。您是否收到任何类型的SQL或php错误消息?我猜SQL是无效的,因为在将输入值添加到SQL之前,您没有转义它们。当输入值通过变量传递时,您不需要转义。确实需要转义。假设
$\u POST[“initials”]
包含一个字符串,其中有一个单引号,如
'a
。这将使您的SQL类似于
插入$scenarios(缩写、中心、循环)值(“'A',”…
),这是无效的。您不是在谈论SQL转义,而是在谈论表单验证和SQL注入。这是一个输入错误还是在查询中缺少“$center”附近的引号--$query=“在
$scenarios
initials
center
recurtive
)值中插入(“$initials.”,,(此处缺少单引号)”.$center.”,“$recurtive.”);