我正在创建一个允许用户对产品进行评级的网页。我正在使用ajax将数据发送到php服务器,在我的情况下,该服务器应返回{"error":"reviewalready"}
。但是ajax没有响应,我不知道为什么?我手动运行服务器页面,这很好。我尝试了相同问题的所有答案,但没有任何帮助。
这是index.php
,其中包含表格
<!-- Review and rating form -->
<div class="review-form">
<p id="feedbackMessage" style="color:red;"></p>
<form id="feedbackForm" method="post">
<div class="form-group">
<input type="hidden" id="hiddenpid" name="pid" class="form-control" value = "<?=$pid?>">
</div>
<div class="form-group">
<textarea class="form-control" id="review" name="feedMessage" cols="50" rows="3" placeholder="Your feedback"></textarea>
</div>
<input class="btn btn-primary" type="submit" value="Post" id="feedBtn">
</form>
</div>
JavaScript
$("#feedbackForm").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
formData.append("ratedindex", ratedindex + 1);
console.log("Form submitted");
$.ajax({
method: "post",
url: "viewserver.php",
data: formData,
contentType: false,
processData: false,
dataType: "json",
success: function(response) {
/* res = JSON.parse(response);
console.log(res.error); */
console.log(response);
}
});
});
服务器页面viewserver.php
<?php
session_start();
include 'dbconnection.php';
date_default_timezone_set('Asia/Calcutta');
$userrating = $_POST['ratedindex'];
$userfeedback = $_POST['feedMessage'];
$pid = $_POST['pid'];
$date = date("DD M,y h:i a");
if (isset($_SESSION['uid']) || isset($_COOKIE['uid'])) {
if (isset($_COOKIE['uid'])) $uid = $_COOKIE['uid'];
else $uid = $_SESSION['uid'];
$sql = $connect->prepare("SELECT * FROM `product_rating` WHERE `user_id` = ? AND `product_id` = ?");
$sql->bind_param("ii", $uid, $pid);
$sql->execute();
$result = $sql->get_result();
if (($result -> num_rows) > 0) {
echo json_encode(array("error" => "reviewalready"));
} else {
$sql = $connect->prepare("INSERT INTO `product_rating` (`user_id`, `product_id`, `rating`, `review`, `date`) VALUES(?, ?, ?, ?, ?)");
$sql->bind_param("iiiss", $uid, $pid, $userrating, $userfeedback, $date);
if ($sql->execute()) {
echo json_encode(array("success" => "posted"));
} else {
echo json_encode(array("error" => "postfailed"));
}
}
} else {
echo json_encode(array("error" => "login"));
}
?>
正在提交表单,但ajax无法正常工作。我发现一切正确,但是我不知道为什么这个问题浪费了我的时间?
答案 0 :(得分:0)
该问题通过修改Javascript代码得以解决。我删除了contentTpe : false
和processData : false
,而不是发送表单数据,而是创建了一个对象_data
。
$("#feedBtn").click(function(e) {
e.preventDefault();
var feedMessage = $("#review").val();
var pid = parseInt($("#hiddenpid").val());
var _data = {
'ratedindex': ratedindex + 1,
'feedMessage': feedMessage,
'pid': pid
};
console.log(_data);
$.ajax({
type: "post",
url: "viewserver.php",
data: _data,
dataType: "json",
success: function(response) {
console.log(response);
},
});
});
它正在工作。