php - Ajax 处理表单提交但不发布变量数据

标签 php mysql ajax forms

我希望这是我今晚提出的最后一个问题,这真的很烦人。我终于找到了一种方法,让这个 Ajax 使用两个单独的 PHP 脚本来处理 HTML 表单,我想这就是最适合我的方法。我将发布所有脚本,以便更容易找出问题。

这是表单(messages.php):

<form action="" method="post" id="reply" name="reply">
<div class="form-group">
 <textarea class="form-control" rows="3" cols="80" id="message" name="message" placeholder="Send a reply..."></textarea>
 <input type="hidden" id="conversation_id" name="conversation_id" value="<? echo $co_conversation_id; ?>">
 <input type="hidden" id="sarssystem" name="sarssystem" value="<? echo $sarssystem; ?>">
</div>
<div class="form-group" align="right">

<div class="btn-group" align="left" style="float:left">
  <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    <span class="glyphicon glyphicon-cog" aria-hidden="true"></span> <span class="caret"></span>
  </button>
  <ul class="dropdown-menu">
    <li><a href="messages.php?convoid=<? echo $co_conversation_id; ?>&del=check">Delete Conversation</a></li>
    <li><a href="#">Visit Profile</a></li>
    <li><a href="#">Report User</a></li>
    <li role="separator" class="divider"></li>
    <li><a href="#">Change Display Photo</a></li>
  </ul>
</div>

  <button type="reset" class="btn btn-default btn-sm">Cancel</button>
  <button type="submit" id="reply" name="reply" class="btn btn-primary btn-sm" onclick="loadDoc()">Send Message</button>
</div>
</form>

这是 Ajax (messages.php):

<script>
function loadDoc() {
  $.ajax({
            url: 'system/message_system.php',
            type: 'POST',
            dataType: 'json',
            data: {
                message: 'message',
                conversation_id: 'conversation_id',
                sarssystem: 'sarssystem',
                user_id: 'user_id'
                },
        })
        .done(function() {

            $.ajax({
                url: 'system/sars_system.php',
                type: 'POST',
                dataType: 'json',
                data: {
                    message: 'message',
                    conversation_id: 'conversation_id',
                    sarssystem: 'sarssystem',
                    user_id: 'user_id'
                    },
            })
            .done(function() {
                console.log("success");
            })
            .fail(function() {
                console.log("error");
            })

        })
        .fail(function() {
            console.log("error");
        })
}
</script>   

我使用这个相同的脚本作为对(system/sars_system.php)和(message_system.php)的测试:

require 'db.php';

    $message = $_POST['message'];
    $conversation_id = $_POST['conversation_id'];
    $sarssystem = $_POST['sarssystem'];
    $user_id = $_POST['user_id'];

$usr_message = str_replace("'","\\'",$message);

mysqli_query($conn,"INSERT INTO ap_messages (message_id, message, sender_id, time_sent, time_read, conversation_id) 
VALUES ('','$usr_message','$user_id', NOW(), NOW(), '$conversation_id')");

mysqli_query($conn, "UPDATE ap_conversations SET time = NOW() WHERE conversation_id = '$conversation_id'");
echo json_encode('success');  

这工作正常并且似乎运行良好,尽管我在 MySQL 中变量数据应该在的位置得到空结果,而且我不知道为什么。

我以这种方式使用 Ajax 的原因是因为它似乎是出于某种原因实际上有效的唯一选择?所以我不确定这是否与问题有关 - 请注意,我实际上不知道如何使用 Ajax,我仍在学习。

如果有人知道数据未发布的原因,很高兴能得到您的帮助!谢谢!

最佳答案

您的 INSERT 查询引用“$usr_message”

mysqli_query($conn,
   "INSERT INTO ap_messages (
 message_id, message, sender_id, time_sent, time_read, conversation_id) 
 VALUES ('','$usr_message','$user_id', NOW(), NOW(), '$conversation_id')");

您正在从 $POST 中读取

$message = $_POST['message'];

将上面的内容改为

$usr_message = $_POST['message'];

关于php - Ajax 处理表单提交但不发布变量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34231399/

相关文章:

mysql - 保持最新的一个字段值直到它改变然后保持其最新的字段值

javascript - 如何在原型(prototype)中使用 periodicalupdater 更新 value 属性

javascript - 不使用方法中的参数之一

php - PHP 中的聚合和委托(delegate)是什么?

php - 添加/更新订阅者地址时出现"Please enter a complete address"错误

mysql - 在 MySQL Point 字段中反转 X 和 Y 坐标

php - 在php中删除确认

javascript - 使用 oauth2 检索授权代码的 Ajax 调用

带有 Javascript 的 PHP - &lt;script&gt;&lt;/script&gt; 标记内的 PHP 变量的范围是什么?

php - CodeIgniter 数据库检查超时错误