我有一个页面,用户可以在照片下方发表评论,在 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 即可工作,因此我认为该功能是正确的。
什么有效
- 评论(var update)被打印在屏幕上的列表中。
- 控制台显示:“ajax 完成”
什么不起作用
- 输入文本不会插入数据库(页面刷新时消失)
- 控制台显示:“未定义”(我在此函数中使用的“响应”一定有问题)
希望大家能帮帮我。谢谢
<小时/>更新 我更改了 js 文件中的: data: { Activitymessage: update} 行,并手动设置 $activity->idPost = 66; 的值$事件->idUser = 3;一切正常!
我只想解决一件事
- 现在可以手动设置 $_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/