JavaScript $.GET 未通过

标签 javascript php mysql

我正在构建一个非常简单的聊天应用程序,没有什么太奇特的,只是多个用户同时聊天的一种方式。

我遇到的问题是,虽然我可以从数据库中读取和显示消息,但不会插入新消息。

我正在使用 JavaScript 传递带有消息和用户名的 $.Get 。我检查了控制台,没有显示任何错误,但当我使用 POSTMAN 测试时,我有一个 undefined index :文本 undefined index :用户名

任何人都可以帮助我朝正确的方向解决这个问题吗?

chat.php

<div class="wrapper">
            <p id='chat-user'> </p>
            <div id='chat-area'></div>
            <form id='send-message-area'>
                <textarea name="the-textarea" id="the-textarea" maxlength="150" placeholder="Start Typing..."autofocus></textarea>              
            </form>
            <button id='chatSend' class="btn btn-info" type="submit">Post New Message</button>
            <div id="the-count">
                <span id="current">0</span>
                <span id="maximum">/ 150</span>
            </div>
        </div>
var name = prompt("Enter your name:", "Guest");
            if (!name || name === ' ') {
                name = "Guest";
            }
            window.onload = function () {
                document.getElementById("chat-user").innerHTML = "Your are: " + name;
            };

            $(document).ready(function () {
                var chatInterval = 250;                       
                var $chatOutput = $("#chat-area");
                var $chatInput = $("#the-textarea");
                var $chatSend = $("#chatSend");

                function sendMessage() {               
                    var chatInputString = $chatInput.val();

                    $.GET("testProcess.php", {
                        username: name,
                        text: chatInputString
                    });


                    retrieveMessages();
                }

process.php

<?php

error_reporting(E_ALL);
include ("connection.php");


$username = substr($_GET["username"], 0, 32);
$text = substr($_GET["text"], 0, 150);

$nameEscaped = htmlentities(mysqli_real_escape_string($conn, $username)); 
$textEscaped = htmlentities(mysqli_real_escape_string($conn, $text)); 
$timestamp = date("Y-m-d H:i:s");


$insertMessage = "INSERT INTO message (messageID, messageBody, timeSent, nickname, sent) VALUES ('', '$textEscaped', '$timestamp', '$nameEscaped')";
$result = mysqli_query($conn, $insertMessage);

Messages being displayed

Error Messages

最佳答案

如图所示,您的 postman 请求是错误的 您正在传递带有值 send 的参数 GET 但在您的 php 脚本中您有 $_GET["username"] 和 $_GET["text"] 方法 GET 已经设置在图片中 url 的左侧,因此您不需要发送它,您想要发送的是参数用户名和文本,因此网址将如下所示

http://xxxxxxx/testProcess.php?username=Guest&text=test

至于您的javascript代码,get的jquery方法是$.get而不是$.GET,并且您缺少处理表单提交的方法,因为您的提交按钮位于表单之外,因此正确的方法是将是

    var name = prompt("Enter your name:", "Guest");
    if (!name || name === ' ') {
      name = "Guest";
    }
    window.onload = function() {
      document.getElementById("chat-user").innerHTML = "Your are: " + name;
    };

    $(document).ready(function() {
    var chatInterval = 250;
    var $chatOutput = $("#chat-area");
    var $chatInput = $("#the-textarea");
    var $chatSend = $("#chatSend");

    //intercepting the submit event to call the sendMessage function
    $("#send-message-area").on("submit", function(e) {
      e.preventDefault();
      sendMessage()
    })

    function sendMessage() {
      var chatInputString = $chatInput.val();
      $.get("testProcess.php", {
        username: name,
        text: chatInputString
      });


      retrieveMessages();
    }
  })

关于JavaScript $.GET 未通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55651996/

相关文章:

mysql - 如何选择没有值的列?

javascript - ionic 条件无线变化

PHP 参数/嵌套文件夹/CMS

mysql - MYSQL 存储过程中的 DELETE FROM

php - 如何检查显示来 self 的服务器的图像的站点的 URL

php - MySQL - 根据值选择列

mysql - 为什么触发器不在架构范围内?

javascript - 预加载传单附近的瓷砖

javascript - 从旧的外部 Javascript 更改 React 组件的状态?

javascript - 将 C# 列表(多个)转换为 JavaScript 关联数组