我正在尝试从数据库中获取一些数据。我创建了一个位于 functions.php
中的函数返回值的文件。在另一个页面上,我创建了一个变量并获取了该值。我正在尝试使用 onkey
检查数据库,但后来我意识到我需要知道票的数量,即使他们不输入任何内容。
函数如下:
函数.php
function is_ticket_able($conn){
$query = "select number_of_tickets from [dbo].[TICKETS] " ;
$stmt = sqlsrv_query($conn, $query);
while ($row = sqlsrv_fetch_array($stmt)) {
$amount_of_tickets = $row['number_of_tickets'];
}
return $amount_of_tickets;
}
而且,我正在尝试检查数据库(不刷新页面)并获取此页面上的值:
application.php
$amount_of_tickets = is_ticket_able($conn);
然后,我只检查 $amount_of_tickets
不是 0 或 1。因为如果是 1,则必须更改某些内容。
我正在这样做(在 application.php 中):
if($amount_of_tickets !=0){
//show the form and let them apply for tickets.
//also
if($amount_of_tickets == 1){
//just let them apply for one ticket.
}
}
编辑:我看到 AJAX 是正确的选择,但我对它的使用感到很困惑。
更新:
函数.php
function is_ticket_able($conn){
$query = "select number_of_tickets from [dbo].[TICKETS_LKUP] " ;
$stmt = sqlsrv_query($conn, $query);
while ($row = sqlsrv_fetch_array($stmt)) {
$ticket = $row['number_of_tickets'];
}
return $ticket;
}
应用程序.php
$amount_of_tickets = is_ticket_able($conn);
<script type="text/javascript">
var global_isTicketAble = 0;
checkTicket();
function checkTicket()
{
$.ajax(
{
url: "application.php",
method: 'GET',
dataType: 'text',
async: true,
success: function( text )
{
global_isTicketAble = text;
alert(global_isTicketAble);
if( global_isTicketAble == 0 ){
window.location.replace("http://www.google.com");
}
setTimeout( checkTicket, 5000 ); // check every 5 sec
}
});
}
</script>
所以,现在的问题是,当我 alert(global_isTicketAble);
它不会提醒数据库中的值,但会提醒 application.php 中的所有内容...Help plzzz
最佳答案
服务器端
假设您需要定期检查 $amount_of_tickets
并且可以将其计算到 application.php 中,在该文件中您将拥有
<?php
// $conn is defined and set somewhere
$amount_of_tickets = is_ticket_able($conn);
echo $amount_of_tickets;
exit(0);
?>
这样,当使用简单的 GET 请求调用脚本时,值将作为简单文本在响应中返回。
客户端
ajax 是您想要在不重新加载页面的情况下更新信息的方式。
下面只是一个简单的示例(使用 jQuery),可以对其进行扩展以满足您的需要。
下面的代码是一个 JavaScript 片段。一个全局变量用于存储值(应该避免使用全局变量,但这只是为了示例的目的)
然后调用函数并从 function.php 脚本中获取更新值。
函数 -prior termination- 安排自身(使用 setTimeout
)在给定的毫秒数后重新调用(以重复获取值过程)。
var global_isTicketAble = 0;
checkTicket();
function checkTicket()
{
$.ajax(
{
url: "application.php",
method: 'GET',
dataType: 'text',
async: true,
success: function( text )
{
global_isTicketAble = text;
// eventually do something here
// with the value just fetched
// (ex. update the data displayed)
setTimeout( checkTicket, 5000 ); // check every 5 sec
}
}
}
请注意 $.ajax()
发送请求但不等待响应(因为 async
设置为 true
)。收到请求后,将执行指定为 success
的函数。
可以在此处找到完整的 jQuery ajax 函数文档
关于javascript - 如何在不刷新页面的情况下从php中的sql server数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36774508/