【问题标题】:Ajax call to submit text into database don't work将文本提交到数据库的 Ajax 调用不起作用
【发布时间】:2017-10-12 19:14:23
【问题描述】:

我有一个页面,用户可以将 cmets 放在照片下方,在 php 中一切正常,cmets 进入数据库并显示在照片下方。 现在我正试图让它与 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,分别是照片和 cmets。通过这种方式,我可以进行查询,返回该页面的所有 cmets。

$_SESSION['user_id'] 是用户的 id,所以我可以回显用户名和头像。

【问题讨论】:

    标签: javascript php jquery json ajax


    【解决方案1】:

    您正在发送密钥为update 而不是activitymessage 的数据

    将数据更改为:

    data: { activitymessage: update}
    

    或者把$_POST['activitymessage']改成$_POST['update']


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

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

    不知道为什么你需要使用 $_GET['nr'] 并且不要使用 $_POSTnr 属性来发送数据对象

    【讨论】:

    • 这是正确的。此外,OP 在控制台中未定义的原因是因为第一点。 $_POST['activitymessage'] 没有设置,所以它会跳过设置了 $response 的部分。他可能想在 if 语句中添加一个 else 来设置 $response['message'] = 'Comment not provided';
    • Thanx @charlietfl ,我已经用你给我的信息更新了我的问题。 $_GET['nr'] 是页面的 id (post.php?nr=66),我可以在其中设置评论。我认为我现在唯一需要完成此代码的就是将 GET 和 SESSIONS 导入 javascript,并将它们发送到 php 页面,这样做的好方法是什么?
    • 这没有意义...会话存储在服务器上
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多