0

ユーザーがログインしたときに次のphpページを実行したい.次のphpコードを使用して、名前でオンライン訪問を表示し、プロファイルページにもリンクしました。

online.phpのリロード時にphpページが実行されています。

それはphpの通常の方法ですが、ajaxを使用して次のphpスクリプトを実行したいと思います。ajax を使用してフォーム データを送信する方法は知っていますが、ページ内にフォームがない場合にデータを送信する方法がわかりません。

これはどのように可能ですか?試してみましたが、まだ機能していません。:JQueryも使用しています。

AJAX コード

//update the online users list
$.ajax({
    type: "POST",
    url: "online.php",
    data: data,
    success: function (response) {
        $("#online").html(response);
    }
}); //end it

PHP コード

<?php
    session_start();

    include('controller/class/RO_dbconfig.php');

    $sth = $dbconnect->prepare("SELECT first_name,keyId FROM register WHERE status = :online");
    $params = array("online" => 1);
    $sth->execute($params);
    $status = $sth->fetchAll();

    echo "<div id='online'>";

    foreach($status as $onlineArray) {
        echo "<ul class='online'>";
        echo "<li><a href='timeline.php?profileId=".$onlineArray['keyId']."'>".$onlineArray['first_name']."</a></li>";
        echo "</ul>";
    }

    echo "</div>";
?>
4

4 に答える 4

0

ユーザーがオンラインのときに更新することはできません。タイマーを使用して online.php をポーリングする必要があります。ここで説明されているように、ローストされたコードを定期的に実行します: JavaScript を使用したサーバー ポーリング

于 2013-04-25T14:45:24.887 に答える
0

あなたの実際の質問が何であるかわからないので、私はあなたの質問を言い換えようとします。

ユーザーがログオンしたときに、オンライン ユーザーのリストを更新する必要があります。現在ログオンしているすべてのユーザーについて、このリストをその場で更新しますか? これは、php を使用して (簡単に) 可能ではないためです。数分ごとにチェックするポーリング スクリプトを作成できます。

それが必要かどうかはわかりません。ページロードごとにこのリストを更新してもまったく問題ないと思います。これらの変更をユーザーにプッシュしたい場合は、長いポーリングを調べる必要があります。

いかなる場合でも:

AJAX コード

setInterval(function(){
    $.ajax({
        type: "POST",
        url: "online.php",
        complete: function(jqXHR, textStatus){
            $("#online").html(jqXHR.responseText);
        }
    });
},300000);

PHP

<?php 
session_start();
include('controller/class/RO_dbconfig.php');

$sth = $dbconnect->prepare("SELECT first_name,keyId FROM register WHERE status = :online");
$params = array("online" => 1);
$sth->execute($params);

$status = $sth->fetchAll();

echo "<ul  class='online'>";
foreach($status as $onlineArray){
    echo "<li><a href='timeline.php?profileId=" . $onlineArray['keyId'] . "'>" . $onlineArray['first_name'] . "</a></li>";
}
echo "</ul>";
?>

これにより、5 分ごとにリストが呼び出され、div#online が更新されます。これはまだ必要なステップではないと思います。ハッシュされた URL を使用する場合は、pageLoad または hashChange で ajax を呼び出すだけです。

脚注、このコードはテストされていないため、あちこちに間違いを書いている可能性があります。

于 2013-04-25T14:59:03.120 に答える
0

使用する必要がありますload()

$("#online").load("online.php");

または、get を使用することもできます (あなたの場合は post よりも優れています):

$.ajax({
            type: "GET",
            url: "online.php",
            data: {},

            success: function (responce) {

                $("#online").html(responce);

            }



        });
于 2013-04-25T14:42:14.017 に答える