0

基本的なPhp Ajaxチャットアプリケーションを作成しています。

この基本的なアプリケーションを自分のPCでクロスブラウザ(一度にChromeとMozillaを2人で想定)で使用している場合は、正常に動作しています。しかし、私がクロスPCでこのアプリケーションを使用している場合、1人の男性が1台のPCからチャットし、別の男性が2台目のPCからチャットしていることを意味し、機能していません。

問題:1台のPCからのチャットコンテンツの送信は2台目のPCで受信していますが、2台目のPCからのチャットコンテンツの送信(チャット応答)はチャットコンテンツの送信を受信して​​いません

 Ajax response is not coming using `set Interval` and browser is not refreshing..

コード:

Jクエリ

setInterval(function() { 
   $.ajax({
     url: "http://192.168.1.13/naresh/ajaxchat/chatsave.php?q=getChat",
     success: function(response) {
        $("#ulShowChatContent").append(response);
         }
    });
}, 1000);

PHP

function getChat(){
        $useremail  = $_SESSION['email'];
        $sqlGetUserInfo = mysql_query("select * from  users where email = '$useremail'") or die(mysql_error());
        if(mysql_num_rows($sqlGetUserInfo)>0){
            $userInfo = mysql_fetch_array($sqlGetUserInfo);
            $userId = $userInfo['id']; 
            $currentdate =  date('Y-m-d H:i:s');

            $sqlGetChatContent = mysql_query("select chat_id,chat_content,name from pvt_chat 
                                                INNER JOIN users ON pvt_chat.userid = users.id 
                                                where pvt_chat.userid != '$userId' 
                                                and receive_status = 0
                                                and send_datetime <= '$currentdate' 
                                                ORDER BY send_datetime DESC limit 1") or die(mysql_error());

            if(mysql_num_rows($sqlGetChatContent)>0) {
                $resGetChatContent = mysql_fetch_array($sqlGetChatContent);
                $receiveChatId = $resGetChatContent['chat_id'];
                echo '<li>'.$resGetChatContent['name'].' says : '.$resGetChatContent['chat_content'].'</li>';
                $sqlUpdateRecStatus = mysql_query("UPDATE pvt_chat SET receive_status = '1' WHERE chat_id ='$receiveChatId'") or die(mysql_error());
            }
        }
    }
4

1 に答える 1

2

あなたへの私の質問: PC2 がチャットにアクセスするために使用している Web ページ (+ ドメイン) は何ですか? ページが彼のローカルホストまたは 192.168.1.13 以外のドメイン/IP からアクセスされる場合、クロスドメインの問題があります。現在のブラウザーは、セキュリティ上の理由から、別のドメイン (さらにはサブドメインとポートが同じ IIRC でなければならない) 上の Web ページへの AJAX 呼び出しをブロックします。PC2 がhttp://localhost/chatPage.html(たとえば) から Web ページにアクセスしている場合、AJAX 呼び出しで "http://192.168.1.13" に要求することはできません。

いくつかの解決策:

  • AJAX 呼び出しの発信元と同じサーバーでチャットページをホストします (チャットページのドメインが AJAX 呼び出しのドメインと同じになるようにします)。
  • JSON 応答を使用して、ブラウザーで HTML に変換します。JSON を使用している場合のクロスドメインの問題に対する回避策がありますが、それは、JSON 出力を自分で HTML に変換する必要があることを意味します。dataType: 'jsonp'また、AJAX 呼び出しに属性を入れていることを確認する必要があります。
于 2013-01-02T11:22:38.957 に答える