我的Ajax遇到问题。它似乎没有将数据发送到我的php文件,即使它在2天前正常工作也是如此。 HTML:
<form id='comment' action='process.php' method="POST">
<textarea></textarea>
<button type='submit'>Comment</button>
</form>
我的Ajax代码:
$('#comment').submit(function(event) {
var form = $(this);
var method = form.attr('method');
var url = form.attr('action');
info = {
comment: $('textarea').val()
};
console.log(method);
console.log(url);
console.log(info);
$.ajax({
type: method,
url: url,
data: info,
success: function(data){
alert(data);
}
});
event.preventDefault();
});
我正在为一个朋友做这个,并且我在我的网站上使用了完全相同的Ajax代码(略作修改),并且它工作正常。 我认为这里最大的危险信号是我的php文件中有一个if-else,如果textarea为空,它应该发送警报,但由于某种原因,即使没有任何反应,它也不会在这里这样做。我在所有变量上使用了console.log,以查看它们的值是否正确。警报(数据)仅返回一个空的警报框。
编辑:根据要求,来自process.php的PHP代码
<?php
session_start();
include_once 'db_connection.php';
date_default_timezone_set('Europe/Zagreb');
if(isset($_POST['comment'])){
function SQLInsert($id, $date, $komentar, $conn){
$sql = "INSERT INTO comments (user, date, comment) VALUES ('$id', '$date',
'$comment')";
$conn -> query($sql);
$conn -> close();
}
$id = $_SESSION['username'];
$date = date('Y-m-d H:i:s');
$comment = htmlspecialchars($_POST['comment']);
SQLInsert($id, $date, $komentar, $conn);
} else {
echo '<script>';
echo 'alert("Comment box is empty.");';
echo '</script>';
}
?>
编辑:问题已解决,感谢大家的帮助。
答案 0 :(得分:1)
您没有收到警报,因为您没有在php文件中显示任何内容作为响应。同样在if条件之外添加插入功能
function SQLInsert($id, $date, $komentar, $conn){
$sql = "INSERT INTO comments (user, date, comment) VALUES ('$id', '$date',
'$comment')";
if($conn -> query($sql)){
return true;
}else{
return false;
}
$conn -> close();
}
if(isset($_POST['comment'])){
$id = $_SESSION['username'];
$date = date('Y-m-d H:i:s');
$comment = htmlspecialchars($_POST['comment']);
$insert = SQLInsert($id, $date, $komentar, $conn);
//On based on insert display the response. After that you will get alert message in ajax
if($insert){
echo 'insert sucess';
die;
}else{
echo 'Error Message';
die;
}
}
答案 1 :(得分:0)
<form id='comment' action='process.php' method="POST">
<textarea></textarea>
<button id="submit_button">Comment</button>
</form>
从此html开始,您必须以以下方式触发功能:
$("#submit_button").click(function(e){
为简单起见,我为您的按钮添加了一个id,并删除了该类型,因为在这种情况下它是无用的。
如果要捕获表单的Submit事件,则必须将html更改为:
<form id='comment' action='process.php' method="POST">
<textarea></textarea>
<input type='submit'>Comment</button>
</form>
然后您可以保留相同的javascript
答案 2 :(得分:0)
这是问题。您是否尝试过提供“方法”?
$.ajax({
**type: method,**
method : method,
url: url,
data: info,
success: function(data){
alert(data);
}
});
如果这不能解决问题。显示控制台输出
答案 3 :(得分:0)
<form name="fileInfoForm" id='comment' method="post" enctype="multipart/form-data">
<textarea id="textarea"></textarea>
<button type="submit"></button>
</form>
<script type="text/javascript">
$('#comment').submit(function (e) {
e.preventDefault();
var textarea=$('#textarea').val();
var form=document.getElementById('comment');
var fd=new FormData(form);
fd.append('textarea',textarea);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: 'action.php',
data: fd,
dataType: "json",
processData: false,
contentType: false,
cache: false,
success: function (data) {
alert(data);
}
})
});
</script>
in action.php
$textarea= $_POST['textarea'];
echo $textarea;