0

我正在尝试在我的网站上创建一种邮件。

所以我有一个包含三列的表,比方说(为了简单起见,但实际上),有两个 int 字段(从,到)和一个时间戳(发送日期)

在我的页面的一部分中,我显示了一个带有分组依据的消息列表,以to对发往同一个人的所有消息进行分组。

最终,我想在单击消息时显示整个对话,但这并不明显。

我尝试了 jquery ajax,然后是 iframe,但它不是很好,因为一方面它没有返回任何东西(白页),其次每秒重新加载不是很好。

首先,我想显示我的请求的结果。

我没有设置回调,因为我不知道如何处理 jquery 回调中的应用程序。我认为最简单的方法是在 php 中进行处理并运行我的循环,然后在 iframe 中显示所有内容。

所以我把它放在jquery中

$( ".load_message" ).click(function() {
            //On marque uniquement l'id de l'expediteur et du destinataire
            // pour chercher les messages expédiés par A vers B ou inversement
            var from = $(this).closest('tr').find('span.from').text();
            var to = $(this).closest('tr').find('span.to').text();
            $.ajax({
                type: 'POST',
                url: 'pages_ajax/fetch-messages.php',
                data: { from: from,  to: to},
                dataType: "json"
            });
        });
         setInterval(refreshIframe1, 1000);
       function refreshIframe1() {
           $("#messages")[0].src = $("#messages")[0].src;
       }

和我有这个的php页面:

<?php
session_start();
require_once("../../lib_php/librairie.php");
require_once("../../config/connexion.php");
//header('Content-Type: application/json; charset=utf8');

/**
 * Fonction qui retourne une liste de messages
 * @return int
 */
function fetchMessages() {
    if (isset($_POST['from'])) {
        $from = mysql_real_escape_string($_POST['from']);
        $to = mysql_real_escape_string($_POST['to']);

        $query = "SELECT `id`, `from`, `to`, `message`, `sent`, `read`, `direction`
    FROM `cometchat`
    WHERE `from` = {$from} || `from` = {$to} || `to` = {$to} || `to` = {$from}";

        return $query;
    } else {
        return null;
    }
}

if (isset($_POST['from'])) {
    $liste_messages = fetchMessages();
    if (!is_null($liste_messages)) {
        $result_message = mysql_query($liste_messages);
        while ($mess = mysql_fetch_assoc($result_message)):
            ?>

            ici
            <?php
        endwhile;
    }
}
?>

但是现在没有任何效果我什至没有我的消息,而在 phpMyAdmin 中运行我的查询的回声返回给我一些东西。我想我在重新加载时失去了上下文($_POST 失去了自己)

我最初会在 iframe 或 div 中显示整个对话,然后如果有新帖子,它会自动更新,这有点像 Facebook 上的消息传递系统,无需重新加载页面。

任何帮助将不胜感激。

4

1 回答 1

0

你问这个问题已经有一段时间了,希望你能解决它。无论如何,我可以从您的代码和您尝试做的事情中看出:

  1. 您的 jquery 函数没有回调(成功,完成)
  2. 您的 php 代码不返回任何内容,您只需执行一个循环,就像您想要操作每条记录一样,阅读您的帖子,您想让您的 ajax 读取成功回调中的所有值......所以不需要循环除了你想解析它,只需将它们暴露在json_encode($mess);
  3. setInterval 1s? 啊!!!你的服务器会处理它吗?使用类似 10 à 30s 或 4 的东西:
  4. 去 websocket 解决方案,如 php 中的球拍或使用 nodejs 平台(nodejs + socket.io + redis)希望它帮助你或其他人
于 2014-02-12T09:50:30.467 回答