0

コールバックで返されるリクエストを実行したいのですが、

実は何かをクリックすると会話が消えてしまうシステムなのですが、

そこで、クエリを実行し始めました。要素をクリックすると、リクエストを返すデータが php ファイルに送信されます。

以下は私の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",
                beforeSend:function(){
                    // this is where we append a loading image
                    $('#message_display').empty()
                    $('#message_display').attr('style','text-align:center');
                    $('#message_display').append('<img src="images/loading.gif" alt="Loading..." />');
                },
                success:function(data){
                    // successful request; do something with the data
                    if(data.error==1){
                        $('#message_display').empty().removeAttr('style');

                    }
                    // if faliure
                    else if(data.error==0){
                        // failed request; give feedback to user
                        $('#message_display').empty().removeAttr('style');
                        $('#message_display').attr('class','error').empty().append('<b>Il n\'y a pas de messages à afficher.</b>');
                    }
                },
                error:function(){
                    // failed request; give feedback to user
                    $('#message_display').empty().removeAttr('style');
                    $('#message_display').attr('class','error').empty().append('<b>Il n\'y a pas de messages à afficher.</b>');
                }
            });
        });

PHPファイルでは、SQLリクエストを返すだけです

ここに私の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() {
    $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}";
    $data = mysql_query($query);
    if (mysql_num_rows($data) == 0) {
        $data['error'] = 1;
        $data['sql'] = $data;
    } else {
        $data['sql'] = null;
        $data['error'] = 0;
    }

    return $data;
}

echo fetchMessages();

そのクエリでループを作成してすべての結果をdivに表示する方法がわかりません.クエリを返すのは初めてなので、通常はいくつかの変数を返すだけです. しかし、今回はあまりにも多くのデータが表示されます。

どんな種類の助けも大歓迎です。

4

2 に答える 2

0

これを試して:

function fetchMessages() {
    $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} OR `from` = {$to} OR `to` = {$to} OR `to` = {$from}";

    $results = mysql_fetch_assoc(mysql_query($query));

    $data = array();
    if (!sizeof($results)) {
        $data['error'] = 1;
        $data['sql'] = $query;
    } else {
        $data['sql'] = null;
        $data['error'] = 0;
        $data['results'] = $results;
    }

    return $data;
}

利用方法:

$data = fetchMessages();
if ($data['error']) {
    // show error
}
else
{
    foreach ($data['results'] as $result) {
        // debug
        print_r($result);
    }
}
于 2013-11-01T19:37:27.967 に答える