javascript - 如何在不刷新页面的情况下从php中的sql server数据库中获取数据

标签 javascript jquery sql-server ajax sql-server-2012

我正在尝试从数据库中获取一些数据。我创建了一个位于 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 函数文档

http://api.jquery.com/jquery.ajax/

关于javascript - 如何在不刷新页面的情况下从php中的sql server数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36774508/

相关文章:

javascript - Selenium:无法在 GWT 应用程序中找到元素

javascript - 使用 fetch 提交多个表单

javascript - jQuery UI - 防止在父 div 之外调整对话框的大小

sql-server - VARCHAR 长度有什么理由为 (2^n) - 1?

sql-server - 如何在sql server中创建一个带有结果集的表

javascript - 将多行从 JSON 结构插入到 MySQL

javascript - 使用 jQuery 获取 url 并提取 url 段

javascript - 动态创建 html 内容时移动设备上没有滚动条

javascript - 有没有办法通过在 url 中使用 div id 来更改事件元素?

c# - 如何在 Entity Framework 中创建返回 IQueryable<T> 的导航属性