如何将PHP变量传递到AJAX URL



大家好,我是javascript新手我正在尝试将php变量发送到AJAX url文件,但我无法做到。我不知道问题实际出现在哪里。将非常感谢您的帮助

在这里,我想发送下面的PHP变量"$支票";到AJAX URL页面cheque_select.php

<php? $cheque = '78964Y' ?>
$(document).ready(function(){  

function fetch_data()
{
$.ajax({
url:"cheque_select.php",
method:"POST",
dataType:"json",

success:function(data)
{
var html = '';
for(var count = 0; count < data.length; count++)
{
html += '<tr>';
html += '<td><input type="checkbox" id="'+data[count].id+'" data-cheque_no="'+data[count].cheque_no+'" data-id="'+data[count].id+'" data-name="'+data[count].name+'" data-sum="'+data[count].sum+'" data-account="'+data[count].account+'" class="check_box"  /></td>';
html += '<td>'+data[count].cheque_no+'</td>';
html += '<td>'+data[count].id+'</td>';
html += '<td>'+data[count].name+'</td>';
html += '<td>'+data[count].sum+'</td>';
html += '<td>'+data[count].account+'</td></tr>';
}
$('tbody').html(html);
}
});
}
fetch_data();

这是我的cheque_select.php,我想通过上面的变量从mysql中获取数据

<?php

include('connection.php');



$query = "select   * FROM entry where entry.bank= $cheque";
$statement = $connect->prepare($query);



if($statement->execute())
{
while($row = $statement->fetch(PDO::FETCH_ASSOC))
{
$data[] = $row;
}
echo json_encode($data);
}
?>

只需添加一个"数据";值。这将以POST值的形式向接收ajax请求的页面发送数据。这是修订后的";fetch_ data";添加要发送的数据后的功能:

function fetch_data()
{
$.ajax({
url:"cheque_select.php",
method:"POST",
dataType:"json",
data:{"cheque":"<?= $cheque ?>"},
success:function(data)
{
var html = '';
for(var count = 0; count < data.length; count++)
{
html += '<tr>';
html += '<td><input type="checkbox" id="'+data[count].id+'" data-cheque_no="'+data[count].cheque_no+'" data-id="'+data[count].id+'" data-name="'+data[count].name+'" data-sum="'+data[count].sum+'" data-account="'+data[count].account+'" class="check_box"  /></td>';
html += '<td>'+data[count].cheque_no+'</td>';
html += '<td>'+data[count].id+'</td>';
html += '<td>'+data[count].name+'</td>';
html += '<td>'+data[count].sum+'</td>';
html += '<td>'+data[count].account+'</td></tr>';
}
$('tbody').html(html);
}
});
}

然后在收到请求的页面上,您可以通过说php $_POST['cheque']来获得支票价值。另外,我注意到的一个错误是你打错了打开PHP的标签。你已经写了<php?。正确的方式是<?php

还有一件事——你还没有在PHP页面中正确地准备好你的语句。这就是你应该如何准备:

$pre_stmt = "SELECT * FROM entry WHERE entry.bank=?";
$stmt = $conn->prepare($pre_stmt);
$stmt->bind_param(
"i", # if cheque is a numerical value keep it "i" otherwise change it to "s" if it is a string
$cheque
);
$stmt->execute();
#do whatever success condition

准备这样的语句可以防止SQL注入

在AJAX请求中添加data,如-

<?php $cheque = '78964Y' ?>
$(document).ready(function(){  
function fetch_data()
{
$.ajax({
url:"cheque_select.php",
method:"POST",
dataType:"json",
data:{'cheque': "<?php echo $cheque; ?>"},
success:function(data)
{
var html = '';
for(var count = 0; count < data.length; count++)
{
html += '<tr>';
html += '<td><input type="checkbox" id="'+data[count].id+'" data-cheque_no="'+data[count].cheque_no+'" data-id="'+data[count].id+'" data-name="'+data[count].name+'" data-sum="'+data[count].sum+'" data-account="'+data[count].account+'" class="check_box"  /></td>';
html += '<td>'+data[count].cheque_no+'</td>';
html += '<td>'+data[count].id+'</td>';
html += '<td>'+data[count].name+'</td>';
html += '<td>'+data[count].sum+'</td>';
html += '<td>'+data[count].account+'</td></tr>';
}
$('tbody').html(html);
}
});
}
fetch_data();

它会将支票价值发送到服务器端。

在查询前的PHP端添加-

<?php
include 'connection.php';
$cheque = $_POST['cheque'];
$query = "SELECT * FROM entry WHERE entry.bank = ?"; 
$statement = $connect->prepare($query);
$statement->execute([$cheque]);
$data = $statement->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data);

最新更新