Javascript jQuery$.post未传递所有数据
我有一个jQuery$.post脚本,它没有将所有数据传递给它调用的php脚本。当我只向数据字段传递了两个参数时,它工作得很好,但现在我得到的不仅仅是两个参数,它不再工作了。控制台正在显示字段的值,但由于某种原因,数据没有插入到数据库中 HTML表单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">
<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.”);