Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交的聊天记录未发布和检索聊天记录未工作_Javascript_Php_Jquery_Ajax_Chat - Fatal编程技术网

Javascript 提交的聊天记录未发布和检索聊天记录未工作

Javascript 提交的聊天记录未发布和检索聊天记录未工作,javascript,php,jquery,ajax,chat,Javascript,Php,Jquery,Ajax,Chat,我使用下面的php聊天脚本在我的web应用程序上创建两个用户之间的聊天区。我对Ajax发布有问题。当用户提交聊天时,它不会在聊天窗口中发布或显示。我试图检查错误,这是错误消息 加载资源失败:服务器响应状态为404(未找到) submit.php和refresh.php会显示相同的错误消息 这是我的密码: JS //聊天功能 var lastTimeID=0; $(文档).ready(函数(){ $('#btnSend')。单击(函数(){ sendChatText(); $('#chatInpu

我使用下面的php聊天脚本在我的web应用程序上创建两个用户之间的聊天区。我对Ajax发布有问题。当用户提交聊天时,它不会在聊天窗口中发布或显示。我试图检查错误,这是错误消息

加载资源失败:服务器响应状态为404(未找到)

submit.php和refresh.php会显示相同的错误消息

这是我的密码:

JS

//聊天功能
var lastTimeID=0;
$(文档).ready(函数(){
$('#btnSend')。单击(函数(){
sendChatText();
$('#chatInput').val(“”);
});
startChat();
});
函数startChat(){
setInterval(函数(){getChatText();},2000);
}
函数getChatText(){
$.ajax({
键入:“获取”,
url:“refresh.php?lastTimeID=“+lastTimeID
}).完成(功能(数据)
{
var jsonData=JSON.parse(数据);
var jsonLength=jsonData.results.length;
var html=“”;
对于(var i=0;i
chatClass.php

<?PHP
 class chatClass
  {
    public static function getRestChatLines($id)
    {
      $arr = array();
      $jsonData = '{"results":[';
      $statement = $db->prepare( "SELECT id, usrname, color, chattext, chattime FROM chat WHERE id > ? and chattime >= DATE_SUB(NOW(), INTERVAL 1 HOUR)");
      $statement->bind_param( 'i', $id);
      $statement->execute();
      $statement->bind_result( $id, $usrname, $color, $chattext, $chattime);
      $line = new stdClass;
      while ($statement->fetch()) {
        $line->id = $id;
        $line->usrname = $usrname;
        $line->color = $color;
        $line->chattext = $chattext;
        $line->chattime = date('H:i:s', strtotime($chattime));
        $arr[] = json_encode($line);
      }
      $statement->close();
      $jsonData .= implode(",", $arr);
      $jsonData .= ']}';
      return $jsonData;
    }

    public static function setChatLines( $chattext, $usrname, $color) {
      $statement = $db->prepare( "INSERT INTO chat( usrname, color, chattext) VALUES(?, ?, ?)");
      $statement->bind_param( 'sss', $usrname, $color, $chattext);
      $statement->execute();
      $statement->close();
    }
  }
  ?>

404找不到通常有一个很简单的原因-您的URL不正确。使用开发者工具中的网络工具查看AJAX调用的完整URL是什么,并检查它是否与您想要的URL匹配。例如,这些文件可能与加载HTML/JS代码的文件夹位于不同的文件夹中?顺便说一句,使用websockets而不是AJAX编写聊天应用程序肯定会更有效率。谢谢Adyson。我能够按照您的指示修复404未找到的问题。然而,我仍然在努力追踪为什么我的聊天没有插入数据库。关于websockets,我以前尝试过使用它,但我的连接有问题。如果没有更多的调试信息,我无法帮助您插入。您是否启用了完整的错误日志记录?请参阅(php错误记录/报告)和(mysqli异常处理),并确保所有功能都已启用。然后再次运行代码,查看日志文件中是否突出显示了任何问题。(如果是我,我会在POST请求的请求正文中发送聊天文本,而不是进入查询字符串-你可能会遇到URL长度的问题,而且它不是非常私有的,因为URL会被记录下来。)我可能看到的另一个问题是会话数据-你似乎没有调用
session_start()
在submit.php或refresh.php中。有很好的文档证明,您必须在希望使用会话的每个脚本中执行此操作(除了通过include/require命令包含在其他脚本中的脚本)。我猜你可能会收到错误/警告。
<?PHP
 class chatClass
  {
    public static function getRestChatLines($id)
    {
      $arr = array();
      $jsonData = '{"results":[';
      $statement = $db->prepare( "SELECT id, usrname, color, chattext, chattime FROM chat WHERE id > ? and chattime >= DATE_SUB(NOW(), INTERVAL 1 HOUR)");
      $statement->bind_param( 'i', $id);
      $statement->execute();
      $statement->bind_result( $id, $usrname, $color, $chattext, $chattime);
      $line = new stdClass;
      while ($statement->fetch()) {
        $line->id = $id;
        $line->usrname = $usrname;
        $line->color = $color;
        $line->chattext = $chattext;
        $line->chattime = date('H:i:s', strtotime($chattime));
        $arr[] = json_encode($line);
      }
      $statement->close();
      $jsonData .= implode(",", $arr);
      $jsonData .= ']}';
      return $jsonData;
    }

    public static function setChatLines( $chattext, $usrname, $color) {
      $statement = $db->prepare( "INSERT INTO chat( usrname, color, chattext) VALUES(?, ?, ?)");
      $statement->bind_param( 'sss', $usrname, $color, $chattext);
      $statement->execute();
      $statement->close();
    }
  }
  ?>
<?php
  require_once( "chatClass.php" );
  $chattext = htmlspecialchars( $_GET['chattext'] );
  chatClass::setChatLines( $chattext, $_SESSION['usrname'], $_SESSION['color']);
?>
<?php
  require_once( "chatClass.php" );
  $id = intval( $_GET[ 'lastTimeID' ] );
  $jsonData = chatClass::getRestChatLines( $id );
  print $jsonData;
?>