ajax,jquery和iframe(创建一个消息框系统)

时间:2013-11-02 04:27:15

标签: javascript php jquery ajax iframe

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

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

我页面的一部分,我显示了一个包含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上的消息系统而没有重新加载页面。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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