【问题标题】:ajax, jquery and Iframe (creating a message box system)ajax、jquery 和 iframe(创建消息框系统)
【发布时间】:2013-11-02 04:27:15
【问题描述】:

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

所以我有一个包含三列的表,比方说(为了简单起见,但实际上),有两个 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 上的消息传递系统,无需重新加载页面。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript php jquery ajax iframe


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多