php - 为什么 AJAX 不向我的 PHP 页面发送数据?

标签 php jquery ajax

我正在尝试制作一个消息应用程序,当我填写输入并单击发送按钮时,成功功能可以工作,但数据不会发送到 insertMessage.php 页面。

  $(document).ready(function(){
  $("#button_send").on("click", function(){
    $.ajax({
        url:"insertMessage.php",
        method:"POST",
        data:{
          fromUser: $("#fromUser").innerHTML,
          toUser: $("#toUser").innerHTML,
          message: $("#message_text").val()
        },
        dataType:"text",
        success:function(data){
          $("#message_text").val("");
        }
    });
  });
});

insertMessage.php页面:

<?php
session_start();
include 'includes/config.php';

$fromUser = $_POST['fromUser'];
$toUser = $_POST['toUser'];
$message = $_POST['message'];

$message = htmlspecialchars($messgae);

$date_p1 = date("d/m/Y");
$date_p2 = date("h:i:sa");
$date = $date_p1." at ".$date_p2;

$insert_message = "INSERT INTO users_messages (from_user, to_user, message, date_time) VALUES (?,?,?,?)";
$check_insert_message = $db->prepare($insert_message);
$check_insert_message->execute([$fromUser, $toUser, $message, $date]);

?>

最佳答案

考虑以下代码片段。

$(function() {
  $("#buttonSend").click(function() {
    $.ajax({
      url: "insertMessage.php",
      method: "POST",
      data: {
        fromUser: $("#fromUser").html(),
        toUser: $("#toUser").html(),
        message: $("#messageText").val()
      },
      success: function(data) {
        $("#messageText").val("");
      }
    });
  });
});
#sendMessage label {
  display: inline-block;
  width: 80px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sendMessage">
  <div><label>From</label><span id="fromUser">Agent Smith</span></div>
  <div><label>To</label><span id="toUser">Tomas Anderson</span></div>
  <div><label>Message</label><input type="text" id="messageText" /></div>
  <button id="buttonSend">Send</button>
</div>

这应该适用于您的 PHP。

我注意到您在 ID 命名约定中从驼峰改为下划线,使用其中一种是更好的做法。我把它们全部换成 Camel 驼峰。

您的 click 事件不需要使用 .on() ,除非元素稍后才存在于 DOM 中。所以我将其更改为 .click() 回调。

尚不清楚您为何尝试使用 innerHTML 属性。这不是 jQuery 对象的属性。因此我改用 .html() 来收集所选对象的 HTML 内容。

查看更多:https://api.jquery.com/html/

This method uses the browser's innerHTML property.

关于php - 为什么 AJAX 不向我的 PHP 页面发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69196977/

相关文章:

php - 想要将表单中的数据字段保存到两个模型的两列中

javascript - 如何避免将双空格算作单词?

javascript - 尝试迭代并解析 xml 标签并分别显示段落中每个标签内的文本

php - Google App Engine PHP 突然停止在本地运行应用程序

php - Laravel mysql 错误关系数据库?

javascript - 单击将输入文本复制到另一个位置

javascript - 通过 AJAX 加载时,Google Analytics pageTracker 功能不起作用

javascript - Ajax 请求在第二次调用后不更新下拉菜单

php - Laravel 非静态方法问题

javascript - 415 不支持的媒体类型 jQuery Ajax