2013-01-02 87 views
0

我正在创建一个基本的PhpAjax聊天应用程序。PHP Ajax聊天:数据一台PC到另一台电脑不发送/接收

当我在我自己的PC上使用这个基本的应用程序在跨浏览器(意味着在一次铬和Mozilla假设两个人)工作正常。但当我在跨PC使用此应用程序意味着一个人正在聊天从一台PC和另一名男子正在聊天从第二台PC然后它不工作..

问题:发送来自一台PC的聊天内容正在接收第二台PC 但是从第二PC(聊天答复)发送聊天内容不接收

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

代码:

Ĵ查询

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

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()); 
      } 
     } 
    } 
+0

PHP + MySQL对于这样的任务是错误的堆栈 - 查看[Node.js + Websockets](http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial)。 – moonwave99

+0

k先生。我会应用他们,但现在为什么它会造成问题? –

+1

那么检查您的控制台是否有任何错误并报告,我们无法得到任何线索。 – moonwave99

回答

2

我的问题给你:什么网页(+域)正在使用PC2访问聊天?如果该页面是从他的本地主机或除192.168.1.13以外的任何域/ IP访问的,则说明您有跨域问题。 出于安全原因,浏览器今天阻止对另一个域上的网页(甚至子域和端口必须是相同的IIRC)的AJAX调用。如果PC2从http://localhost/chatPage.html(例如)访问网页,则他无法在AJAX调用中向“http://192.168.1.13”发出请求。

一些解决方案:

  • 主机在同一台服务器在您的AJAX调用源自于chatpage(这样chatpage的领域是一样的AJAX调用的域)
  • 使用JSON响应并在浏览器中将其转换为HTML。当您使用JSON时,有一个解决跨域问题的解决方法,但这意味着您必须自己将JSON输出转换为HTML。您还需要确保将属性dataType: 'jsonp'置于您的AJAX调用中。
+0

爵先生我使用跨浏览器在我的电脑上聊天时使用http:// localhost。 和http://192.168.1.13正在使用当我聊天交叉时PC –

+1

然后,你应该尝试打开一个网络控制台/开发人员工具(通常通过按F12打开)并查看网络选项卡或类似的东西。 尝试了解发送AJAX请求时会发生什么。 我仍然非常确定这是一个跨域问题(因为它在同一台计算机/ IP上工作,但它不在多个IP上),所以我认为你仍应该考虑我的解决方案。 – g00glen00b

相关问题