0

我正在使用 PHP 创建我的出勤网页,当用户进入时,他会获得当月的出勤率。用户可以使用下拉菜单更改月份,这会刷新整个页面。我只想刷新表格而不是重新加载整个页面。

谁能告诉我如何使用 PHP 做到这一点。

4

5 回答 5

1

PHP 运行服务器端。非常广泛地,这就是来自用户的请求所发生的情况:

  1. 用户点击下拉选项
  2. 浏览器向服务器发送新页面请求(myPage.php)
  3. 服务器在 myPage.php 上运行 PHP 代码,产生一些通常为 HTMl 的输出 (myPage.html*)
  4. 服务器以 myPage.html 响应
  5. 浏览器将页面内容更改为 myPage.html

您可以做的是使用 AJAX 发送请求。改变的是浏览器获取响应,但不会更改页面内容,它只是抛出一个事件,其中 myPage.html 内容可用,但您可以在 JavaScript 中随意使用。在 PHP 方面,你什么都不能改变,重要的部分是你必须编写更新页面的 JavaScript。

显然,由于您只更改了页面的一部分,因此最好不要将整个 myPage.html 从服务器发送回,而只发送更改的页面部分,或者可能是有关如何更改页面的蓝图。

*) myPage.html 实际上并不存在。严格来说,这是我为 PHP 脚本 myPage.php 的输出命名的名称。

您可以在整个网络上找到有关 AJAX 的优质资源。我将给出一个最有信誉的链接,但请随意找到一个或多个适合您的链接。

https://developer.mozilla.org/en-US/docs/AJAX

PS:既然你把问题标记为jQuery,你应该知道jQuery对AJAX的支持非常好。我建议您(学习)使用它。

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

于 2013-11-15T09:29:29.180 回答
0

你必须使用AJAX来处理这些事情。阅读有关。

于 2013-11-15T09:20:00.437 回答
0

您可以使用 ajax 在下拉列表的更改事件上发送 http 请求以将其保存在数据库中 这是发送请求的示例代码

  function makeattan(p)
  {

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","afilename.php,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
  }
于 2013-11-15T09:27:24.523 回答
0

为此使用 Ajax。

构建一个函数,该函数将通过 ajax 从服务器获取当前页面。然后将数据放在页面的同一区域内,并用新内容替换旧内容。

您可以使用 jQuery加载

例如

$( "#result" ).load( "ajax/test.html", function() {
    alert( "Load was performed." );
});

注意,加载会自动替换内容。

于 2013-11-15T09:28:25.170 回答
0

您必须使用 AJAX,例如同时使用 PHP 和 jQuery;类似的东西:

HTML:

<a href="yourScript.php" class="ajaxLink">Load content</a>
<div id="dynamicContentDiv">

</div>

JS:

$( function() {
    $( ".ajaxLink" ).on( "click", function() {
        var ajaxUrl = $( this ).attr( "href" );
        $.get({
            ajaxUrl,
            function( response ) {
                $( "#dynamicContentDiv" ).html( response );
            }
        });
    }
}

使用这个基本脚本,您向脚本发送 GET 请求,并将响应放入dynamicContentDiv; 请参阅 jQuery 文档和 AJAX 资源以了解更高级的行为。;)

于 2013-11-15T09:28:55.643 回答