我想使用AJAX将变量发送到php文件select.php以根据特定日期填充表,该日期取自输入字段。
在我的AJAX脚本上,我有这个用于在单击按钮后获取日期的值,检查日期是否不是空字符串(如果是,则发送引导警报来警告用户),然后尝试使用POST发送变量到我的select.php文件,该文件根据应该通过POST到达的日期来获取表
$(document).on('click', '.b-request', function(){
var fecha = $(".datetimepicker-input").val();
if(fecha == "")
{
$("#msj-alerta").html('<div class="alert alert-danger alert-dismissible"><button type="button" class="close">×</button><b>Heeeeeey</b><br>Date can\'t be blank!</div>');
$('.alert .close').on("click", function(e){
$(this).parent().fadeTo(500, 0).slideUp(500);
});
}
else
{
$.ajax({
url:"select.php",
method:"POST",
data:fecha,
success:function(data)
{
//alert("Date entered: "+ fecha);
$('#live_data').html(data);
}
});
}
这是PHP文件select.php(仅标头):
f(isset($_POST["fecha"]))
{
$my_fecha = $_POST["fecha"];
$connect = mysqli_connect($servername, $username, $password, $dbname);
$output = '';
$sql = "SELECT id, name, type FROM ms_resources.exceptions_new WHERE fecha = '".$my_fecha."';";
同时运行两个代码时出现错误:
Notice: Undefined variable: my_fecha
不确定为什么变量没有达到php,知道吗?
谢谢
答案 0 :(得分:2)
POST值是键/值对。您发送的是值,而不是键:
data:fecha
在使用此值时,此变量的名称在此情况下可能很重要,但是一旦解析了该变量并使用了该值,该名称就不再重要,PHP也对此一无所知。您需要为该值分配一个键。例如:
data: { fecha: fecha }
然后您使用PHP中的密钥获取值:
$_POST["fecha"]
(这只是巧合,在这种情况下,键和客户端变量是相同的。根本没有必要。)
不相关但很重要的服务器端代码也向SQL injection开放。要了解有关这是什么以及如何防止它的更多信息,请this is a great place to start。