0

我正在寻找加载结果,例如一些新电子邮件或新评论等。但我想在加载主页后获取数据。所以,我想先加载主页,然后使用 jQuery 函数显示数字。

<ul>
    <li>new emails (3)</li>
    <li>new comments (12)</li>
    <li>new whatever (3)</li>
</ul>

我知道我必须使用$(document).ready(function(){});然后运行一个 PHP 文件来获取结果,但我不知道如何取回结果以及如何在我的页面上显示它们。有人可以帮我吗?或者引导我走向正确的道路。

4

3 回答 3

0

首先,您可以使用 or 将计数包装在 aspan或任何其他标签中,idclass在 ajax 请求后更新它们。

HTML

<ul>
  <li>new emails (<span id='newEmails'>3</span>)</li>
  <li>new comments (<span id='newComments'>12</span>)</li>
  <li>new whatever (<span id='newWhatever'>3</span>)</li>
</ul>

JS

此脚本发出 ajax 请求yourpage.php并获取 json 编码数据。然后它解码 json 并更新 html 中的计数。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
  $(document).ready(function(){
    $.ajax({
      type: 'POST',
      url: 'yourpage.php',            
      success: function(response){
        //parse your json data
        r = $.parseJSON(response);

        //update your html          
        var newEmails = r.emailCount;
        var newComments = r.commentCount;
        var newWhatever = r.whatever;

        $('#newEmails').html(newEmails);
        $('#newComments').html(newComments);
        $('#newWhatever').html(newWhatever);
      },
      error: function(xhr, status, errorThrown){
        //handle ajax error
      }
    });
  });
</script>

PHP

从数据库中获取所有计数并将其存储在数组中。最后对数组进行编码和回显。

<?php
 //your database operation

 $data = array();
 $data['emailCount'] = 5; // your email count from database
 $data['commentCount'] = 10; // your comments count from database
 $data['whatever'] = 15; // your whatever from database

 echo json_encode($data); //encode your data in JSON format

注意:如果您感到困惑,您可能不需要使用 JSON。您可以在 php 中回显所需的数据并将其作为响应。但是使用 JSON 编码和解码数据更容易。

于 2013-08-01T10:14:22.473 回答
0

JS:

jQuery.ajax({
type: "GET",
url: "YOUR PHP FILE PATH HERE",
data: {username:'username'}, // send the data to the PHP page here like username or whatever
dataType: "json",
success: function(data)
{
var unread_emails=data.email;
var unread_comments=data.comments;
var unread_whatever=data.whatever;
jQuery('li#emails').val("New Emails "+unread_email);
jQuery('li#comments').val("New Comments "+unread_comments);
jQuery('li#whatever').val("New whatever "+unread_whatever);
},
error: function()
{
alert("Some error");
});

在你的 PHP

if(isset($_GET['username']))  
{  
    **DO YOUR QUERY HERE TO GET UNREAD EMAILS, COMMENTS, WHATEVER and STORE IN VARIABLES**

    $return=array('unread_emails'=>$unread_emails, 'unread_comments'=>$unread_comments, 'unread_whatever'=>$unread_whatever);  
    echo json_encode($return);   
}
于 2013-08-01T09:50:34.467 回答
0

为什么不尝试使用 jQuery 使用 ajax 调用并按特定间隔(例如:每 5 秒)获取值。像这样的 JS 示例:

window.setInterval(function(){

   $.ajax({
     type: "GET",
     url: "UR URL",
     success : function(){

        //Your function here

     }
   });
}, 5000);
于 2013-08-01T09:47:38.800 回答