php - 单击我的按钮时,Ajax 代码不起作用
问题描述
我正在建立一个评论系统,我正在使用 ajax 添加和显示评论而不刷新页面,但是添加评论的代码对我不起作用,我没有看到任何错误,什么都没有改变我点击按钮,你能告诉我怎么了吗?
我试图将 $('#comment_form').on('submit', function(event){ 更改为 $(document).on('click', 'submit', function() { 并进行了很多更改,但它是相同。
这是我的代码:-主页
<div class="col-md-6">
<h3>Add a comment</h3>
<form action="" class="form-inline" id="comment_form" method="POST">
<div class="form-group">
<textarea name="commentaire" id="commentaire" cols="60" rows="10"
class="form-control"></textarea>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="ENVOYER"
id="submit" name="submit">
</div>
</form>
<span id="comment_message"></span>
</div>
<script>
$(document).ready(function(){
$('#comment_form').on('submit', function(event){
event.preventDefault();
var form_data = $(this).serialize();
var id = <?php echo $id; ?>;
$.ajax({
url:"add_comment.php",
method:"POST",
data:{form_data,id},
dataType:"JSON",
success:function(data)
{
if(data.error != '')
{
$('#comment_form')[0].reset();
$('#comment_message').html(data.error);
load_comment();
}
}
})
});
</script> ```
- add_comment.php 页面:
<?php
require_once("../Ressources/Config.php");
$error = '';
$comment_content = '';
$id_user=$_SESSION['id_user'];
$id_produit=$_GET['id'];
if(empty($_POST["commentaire"]))
{
$error .= '<p class="text-danger">Comment is required</p>';}
else
{
$comment_content = $_POST["commentaire"];
}
if($error == '')
{
$query =query(" INSERT INTO commentaires (id_produit, id_user, com,
date_a)
VALUES ($id_produit, $id_user, $comment_content, curdate()) ");
confirm($query);
$data = array(
'error' => $error
);
echo json_encode($data);
?>
解决方案
您可以尝试使用 XMLHTTP AJAX 而不是 jQuery ...
基本上你会有这样的东西作为你的javascript:
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sndReq(action) {
http.open('get', 'rpc.php?action='+action+'&arg='+document.getElementByID('commentaire').value);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();
if(response.indexOf('|' != -1)) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}
你可以通过创建一个“按钮”(又名链接)来使用它......
<a class = "button" href="javascript:sndReq('foo')">Send Chat</a>
...并将其设置为看起来像一个按钮。
.button {
font: bold 11px Arial;
text-decoration: none;
background-color: #EEEEEE;
color: #333333;
padding: 2px 6px 2px 6px;
border-top: 1px solid #CCCCCC;
border-right: 1px solid #333333;
border-bottom: 1px solid #333333;
border-left: 1px solid #CCCCCC;
}
然后,要在您的 php 文件中获得您的评论,只需执行以下操作:
switch($_REQUEST['action']) {
case 'foo':
$arg = $_REQUEST["arg"];
/* do something with $arg (aka. the comment) */
echo "foo|$arg";
break;
}
并在您的聊天中显示它,只需创建一个 id = foo 的 div。
<div id="foo">
</div>
推荐阅读
- c - 当我从 makefile 运行时,C-fopen 无法正常工作
- function - ImgUtil 函数和 colorAt
- x86-64 - 如何在 NASM x86 程序集中将两个向量相乘?
- python-3.x - 如何使用python加密和解密带有密码的字符串
- python - 如何使用 yield 将两个列表中的数字通过索引连接到一个元组中?(Python)
- python - 计算python中文本文件中的重复模式?
- php - 如何使用查询构建器基于内部连接关系编写具有不同的自连接查询?
- c - 在 poll() 运行的同时从等待 pollfd 集中删除 fd
- python - PyCharm vs Terminal - 没有正确读取参数
- java - 为无效的 UUID 提供 HttpStatus.BAD_REQUEST