javascript - 将文本提交到数据库的 Ajax 调用不起作用

标签 javascript php jquery json ajax

我有一个页面,用户可以在照片下方发表评论,在 php 中一切正常,评论进入数据库并显示在照片下方。 现在我正在尝试让它与ajax一起工作,但我遇到了一些麻烦。

我有一个 javascript 文档:

$(document).ready(function(){
  $("#btnSubmit").on("click", function(e){

    var update = $("#activitymessage").val()

   $.ajax({
        method: "POST",
        url: "./ajax/save_comment.php",
        //data: { update: update}, - first version, not correct
        data: { activitymessage: update},
        datatype: 'json'

    })
     .done(function(response) {
            console.log("ajax done");
            console.log (response.message);


         var ht = "<li>" + update + "</li>";
         $("#listupdates").append(ht);
        });

    e.preventDefault();

    });
});

php 页面 (save_comment.php),我在其中告诉如何处理输入文本:

<?php
 spl_autoload_register(function ($class) {
 include_once("../classes/" . $class . ".class.php");
 });

$activity = new Comment();


if (!empty($_POST['activitymessage'])) {
$activity->Text = $_POST['activitymessage'];


try {
    //$activity->idPost = $_GET['nr'];
    //$activity->idUser = $_SESSION['user_id'];

    // with this it works, but not yet correct
    $activity->idPost = 66;
    $activity->idUser = 3;

    $activity->SavePost();
    $response['status'] = 'succes';
    $response['message'] = 'Update succesvol';


} catch (Exception $e) {
    $error = $e->getMessage();
    $response['status'] = "error";
    $response['message'] = $feedback;


}
header('Content-type: application/json');
echo json_encode($response);
}

还有带有“Comment”类和函数 SavePost() 的文件 Comment.class.php。这无需 ajax 即可工作,因此我认为该功能是正确的。

什么有效

  1. 评论(var update)被打印在屏幕上的列表中。
  2. 控制台显示:“ajax 完成”

什么不起作用

  1. 输入文本不会插入数据库(页面刷新时消失)
  2. 控制台显示:“未定义”(我在此函数中使用的“响应”一定有问题)

希望大家能帮帮我。谢谢

<小时/>

更新 我更改了 js 文件中的: data: { Activitymessage: update} 行,并手动设置 $activity->idPost = 66; 的值$事件->idUser = 3;一切正常!

我只想解决一件事

  1. 现在可以手动设置 $_GET['nr'] 和 $_SESSION['user_id'] 的值。有可能自动获得这些吗?

$_GET['nr'] 是照片和评论所在页面的 ID。通过这种方式,我可以进行查询,返回该页面的所有评论。

$_SESSION['user_id'] 是用户的 ID,因此我可以回显用户名和个人资料照片。

最佳答案

您发送数据的 key 是update而不是activitymessage

将数据更改为:

data: { activitymessage: update}

或者将 $_POST['activitymessage'] 更改为 $_POST['update']

<小时/>

此外,用于 ajax 的网址中没有 $_GET['nr'] 。没有显示任何内容可以帮助我们解决这个问题,但您需要使网址看起来更像:

url: "./ajax/save_comment.php?nr=" + nrSourceValue,

不确定为什么您需要使用 $_GET['nr'] 而不要使用 $_POST 以及 nr > 正在发送的数据对象的属性

关于javascript - 将文本提交到数据库的 Ajax 调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43955148/

相关文章:

php - 我可以在 WordPress 中使用什么操作来在保存或更新自定义帖子时触发?

javascript - Bootstrap 轮播 : Remove auto slide

javascript - 从 Firebase 获取和显示数据需要时间

javascript - Backbone Collections - create() 是实例方法吗?

php - PCRE 匹配字符串中的整个单词

javascript - 在输入上动态应用 JavaScript

javascript - IE9 Mousemove 事件在 Mousepress 期间不触发

javascript - 单击特定的 div 元素时移除文本的透明度。

java - 是否有正则表达式可以防止输入 Javascript?

javascript - mongo shell --eval 不运行