首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建新闻馈送(AJAX新闻馈送)

如何创建新闻馈送(AJAX新闻馈送)
EN

Stack Overflow用户
提问于 2011-11-18 23:46:09
回答 2查看 15.5K关注 0票数 3

我有一个信息系统,更具体地说是一个信息系统,是一个票务系统。info系统将包含具有无限或'n‘数量的用户的帐户。我希望用户能够看到其他用户的操作或对新闻提要内容的更改。(就像Facebook一样)。我将使用PHP、MySQL和AJAX (或jQuery)来实现新闻提要。我将知道如何设置表和查询。

如何使用PHP和AJAX或jQuery来提取内容并将其显示在新闻提要中(以具有淡入淡出或滚动效果的Facebook新闻提要样式?)。

我一直在寻找一个好的教程,但还没有找到。我想最好是从零开始编码,如果可能的话。

我仍然有几个问题:以下是我的问题:

ajax.php

代码语言:javascript
复制
<?php require_once('../../Connections/f12_database_connect.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_f12_database_connect, $f12_database_connect);
$query_newsfeed_a = "SELECT * FROM newsfeed";
$newsfeed_a = mysql_query($query_newsfeed_a, $f12_database_connect) or die(mysql_error());


while($row_newsfeed_a = mysql_fetch_assoc($newsfeed_a))
{
        echo("<div class='feedItem'>");
    echo("<div class='title'>" . $feedItem['title'] . "</div>");
    echo("<div class='body'>" . $feedItem['body'] . "</div>");
    echo("</div>");



}
$totalRows_newsfeed_a = mysql_num_rows($newsfeed_a);
?>

<?php
mysql_free_result($newsfeed_a);
?>

feed.php

代码语言:javascript
复制
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>

<script>
    function refreshNews()
    {
        $("#news").load("ajax.php")
    }
</script>
</head>

<body>





<div id="news"></div>
</body>
</html>

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-19 00:07:09

如果您想从头开始编写代码,基本过程是创建一个PHP脚本来收集数据并将其发送回AJAX请求。通常我会创建一个单独的PHP文件来处理我需要的任何操作。

PHP脚本通常会输出的所有内容都被发送回AJAX请求。所以任何HTML标签,任何echo / print语句。像header()这样的东西也会创建输出,只是一个警告。

根据页面的设计,您可以在PHP中创建HTML,然后根据需要使用jQuery将该html放入页面。另一种选择是使用PHP()并将所有数据作为json_encode发送回来,然后构建HTML结构客户端。

如果每个提要条目都具有相同的基本结构,那么在PHP中创建HTML服务器端可能是最简单的方法,就像创建任何常规页面一样。您只需要作为提要的HTML代码片段。

最简单的方法是jQuery.load() http://api.jquery.com/load/

在HTML页面中:

代码语言:javascript
复制
<script>
    function refreshNews()
    {
        $("#news").load("path/to/ajax.php")
    }
</script>

<div id="news"></div>

在PHP中:

代码语言:javascript
复制
$sql = "SQL TO GET NEWS FEED";

$result = mysql_query($sql);

while($feedItem = mysql_fetch_assoc($result))
{
    echo("<div class='feedItem'>");
    echo("<div class='title'>" . $feedItem['title'] . "</div>");
    echo("<div class='body'>" . $feedItem['body'] . "</div>");
    echo("</div>");
}

然后,您可以从另一个事件(刷新按钮、定时事件等)调用refreshNews()。

显然,您的html和数据结构可能不同。只需确保这是此PHP文件唯一输出的内容。这包括标记之外的任何内容。

有一些更有效的方法可以做到这一点,这个脚本实际上会在每次调用refreshNews()时重新加载整个新闻条目列表。就目前而言,这是让它工作的最简单的方法之一,所以尝试一下,如果需要的话,还有更有效的方法。

票数 3
EN

Stack Overflow用户

发布于 2011-11-19 00:59:08

Chris的回答很好地概括了这个概念,但它不会提供实时更新。

我们在工作中将Ajax Push Engine用于实时应用程序。

如果您决意要使用PHP和Jquery,那么您可以在服务器端使用类似于Chris推荐的方法,并在客户端拼凑一个计时器,该计时器可以频繁地触发ajax请求。

这只是一个想法,不是我测试过的工作代码,而是类似于:

代码语言:javascript
复制
setInterval ( 
    function(){
        $.get("yourScriptName.php", { userID: 555},
            function(data){
                //update your news feed with data received via ajax request here.
            });
    }, 30000 );

有关更多详细信息,请参阅w3c's setInterval() documentationJquery's $.get() documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8185006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档