阿贾克斯没有任何回应

时间:2020-06-17 17:40:28

标签: php ajax

我正在创建一个允许用户对产品进行评级的网页。我正在使用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无法正常工作。我发现一切正确,但是我不知道为什么这个问题浪费了我的时间?

1 个答案:

答案 0 :(得分:0)

该问题通过修改Javascript代码得以解决。我删除了contentTpe : falseprocessData : 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);
        },
    });
});

它正在工作。

相关问题