0

私は自分のウェブサイトのチャットルームを作っています。メッセージの表示と保存にphpとmysqlを使用しています。Jquery と AJAX を使用して、5 秒ごとにページを更新しようとしています。Jquery や AJAX を使用したことはありません。これが私のJqueryとAJAXコードです。

                    <script type="text/javascript" src="jquery.js"></script>

                    <script type="text/javascript">                             
                    var auto_refresh = setInterval(
                    function(){
                    $('#message_display').load('show_messages_public.php');
                            }, 5000);
                    </script>

「show_messages_public.php」ページに「show_messages()」という関数がありますが、AJAX と Jquery からこの関数を呼び出すにはどうすればよいですか?

<?php
session_start();

function show_messages()
{
$mysql_host = "******";
$mysql_database = "*******";
$mysql_user = "*****";
$mysql_password = "*****";

$link= mysql_connect($mysql_host, $mysql_user, $mysql_password);

if (!$link) {
    die('could not connect:' . mysql_error());
}

$db_selected= mysql_select_db($mysql_database);

if (!$db_selected) {
    die('can\'t use' . $mysql_database . ':' . mysql_error());
}

$query= "SELECT * FROM public_chat ORDER BY time DESC LIMIT 2";
$result= mysql_query($query) or die(mysql_error());
while($row= mysql_fetch_array ($result)) {
    echo '<br/><font color="black">' .$row['time'] . "<br>" . '<b><big>' . '<font color="black">' . $row['user'] . ':' . '</big></b>' . " <br> " . $row['message'] .'</font>'; 
    echo "<br/><hr width=\"95%\"<br/>"/*"<hr width=\"90%\">"*/;
    }
}
?>
4

4 に答える 4

1

phpファイル内に複数の関数がある場合は、次のように実行できます。

jqueryのload関数を使用してパラメーターをPOSTできます。だからあなたはこれを試すことができます:

$('#message_display').load('show_messages_public.php', {showmsg: 'public'});

PHPの内部:

switch($_POST['showmsg']) {
    case 'public':
        show_messages();
        break;
}

複数の関数がない場合は、関数なしでコードを呼び出すだけです。

<?php
session_start();

$mysql_host = "******";
$mysql_database = "*******";
$mysql_user = "*****";
$mysql_password = "*****";

$link= mysql_connect($mysql_host, $mysql_user, $mysql_password);

if (!$link) {
    die('could not connect:' . mysql_error());
}

$db_selected= mysql_select_db($mysql_database);

if (!$db_selected) {
    die('can\'t use' . $mysql_database . ':' . mysql_error());
}

$query= "SELECT * FROM public_chat ORDER BY time DESC LIMIT 2";
$result= mysql_query($query) or die(mysql_error());
while($row= mysql_fetch_array ($result)) {
    echo '<br/><font color="black">' .$row['time'] . "<br>" . '<b><big>' . '<font color="black">' . $row['user'] . ':' . '</big></b>' . " <br> " . $row['message'] .'</font>'; 
    echo "<br/><hr width=\"95%\"<br/>"/*"<hr width=\"90%\">"*/;
}
?>
于 2012-08-18T19:45:45.090 に答える
0

あなたはそうしない。

AJAX から外部プログラム フローをロードできないため、すべてのフロー制御をホスト Web ページに配置する必要があります。


更新後、JavaScript ではなく PHP を呼び出そうとしているようです。

答えは簡単です。ページがデータをレンダリングするという考え方なので、ページの最後に show_messages() を配置するか、実際には.. 関数ラッパーを完全に削除します。

于 2012-08-18T19:35:21.000 に答える
0

「show_messages_public.php」ページに「show_messages()」という関数がありますが、AJAX と Jquery からこの関数を呼び出すにはどうすればよいですか?

あなたはしません。PHP ページは、GET または POST リクエストで渡されたパラメータに基づいてデータを返す必要があります。たとえば、次のパラメータを送信できます。

  • startInt = 1
  • 繰り返し回数 = 5
  • 増分増加 = 3

このような:

 $('#message_display').load('show_messages_public.php?startInt=1&repeatTimes=5&incrementIncrease=3');

次に、PHP で、次のように結果をプレーン テキストとして返すことができます。

<?
    var startInt = $_GET['startInt'];
    var repeatTimes = $_GET['repeatTimes'];
    var incrementIncrease = $_GET['incrementIncrease'];

    var str = "";
    for (var i = startInt; i < repeatTimes * incrementIncrease + startInt; i += incrementIncrease) {
         str .= i."|";
    }

    echo str;
?>

これは以下を返します。

1|4|7|10|13|16|

これで問題が実際に解決されないことはわかっていますが、AJAX の基本を学ぶ必要があるようです。


実際に問題を解決するには:

このコードを試すことができます:

setInterval(function() {
    $('#message_display').load('show_messages_public.php?callfunc=true');
}, 5000);

そして、あなたのPHPで:

 if ($_GET['callfunc'] == "true")
     show_messages();
于 2012-08-18T19:40:55.093 に答える
0

AJAX を介して関数を呼び出すのではなく、リモート アドレス (URL) を実行してから応答を処理するだけです。

于 2012-08-18T19:43:14.890 に答える