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

时间:2017-05-13 15:59:12

标签: 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.class.php,其中包含'Comment'类和函数SavePost()。这没有ajax,所以我认为函数是正确的。

什么有效

  1. 评论(var update)在屏幕上打印到列表中。
  2. 控制台说:“ajax done”
  3. 什么不起作用

    1. 输入文本不会插入数据库(并在页面刷新时消失)
    2. 控制台说:“未定义”(我在此功能中使用的响应一定有问题)
    3. 我希望你们能帮助我。感谢名单

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

      我只想修理一件事

      1. 现在手动设置$ _GET ['nr']和$ _SESSION ['user_id']的值。这有可能让这些自动化吗?
      2. $ _GET ['nr']是照片的页面ID和评论。通过这种方式,我可以创建一个返回该页面所有注释的查询。

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

1 个答案:

答案 0 :(得分:2)

您发送的密钥为update而不是activitymessage

将数据更改为:

data: { activitymessage: update}

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

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

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

不确定为什么需要使用$_GET['nr']并且不使用$_POST,并且nr属性也要用于发送的数据对象