Ajax无法显示来自php的json数据。 json格式出了什么问题?

时间:2017-12-05 18:24:04

标签: php jquery json ajax

我已经阅读了所有与此主题相关的相关问题,但仍然无法在这里找到答案。
因此,php和ajax工作得很好。当我尝试在php和ajax之间包含json来传递数据时,问题就出现了 这是我的ajax:

function likeButton(commentId, userId, sessionUserId) {

  // check if the comment belong to the session userId
  if(sessionUserId == userId) {
    alert("You cannot like your own comment.");
  }
  else if(sessionUserId != userId) {
    var like_upgrade = false;
    $.ajax({
      url: "requests.php",
      type: "POST",
      dataType: "json",
      data: {
        keyLike: "like",
        commentId: commentId,
        userId: userId,
        sessionUserId: sessionUserId,
        like_upgrade: like_upgrade
      },
      success: function(data) {
        var data = $.parseJSON(data);
        $("#comment_body td").find("#updRow #updComLike[data-id='" +commentId+ "']").html(data.gaming_comment_like);
        if(data.like_upgrade == true) {
        upgradeReputation(userId);
      }
      }
    });
  }
}

注意,我尝试来包含此内容:

var data = $.parseJSON(data);

我也尝试使用不同的变量:

var response = $.parseJSON(data);

并尝试了这种格式:

var data = jQuery.parseJSON(data);

这些都不起作用。

此处为requests.php

    if(isset($_POST['keyLike'])) {
    if($_POST['keyLike'] == "like") {
    $commentId = $_POST['commentId'];
    $userId = $_POST['userId'];
    $sessionUserId = $_POST['sessionUserId'];

    $sql_upgrade_like = "SELECT * FROM gaming_comments WHERE gaming_comment_id='$commentId'";
    $result_upgrade_like = mysqli_query($conn, $sql_upgrade_like);
    if($row_upgrade_like = mysqli_fetch_assoc($result_upgrade_like)) {
    $gaming_comment_like = $row_upgrade_like['gaming_comment_like'];
       }
    $gaming_comment_like = $gaming_comment_like + 1;

    $sql_update_like = "UPDATE gaming_comments SET gaming_comment_like='$gaming_comment_like' WHERE gaming_comment_id='$commentId'";
    $result_update_like = mysqli_query($conn, $sql_update_like);

    $sql_insert_like = "INSERT INTO gaming_comment_likes (gaming_comment_id, user_id, user_id_like) VALUES ('$commentId', '$userId', '$sessionUserId')";
    $result_insert_like = mysqli_query($conn, $sql_insert_like);
    $like_upgrade = true;
//json format
    $data = array("gaming_comment_like" => $gaming_comment_like,
     "like_upgrade" => $like_upgrade);
    echo json_encode($data);
    exit();
           }
        }

注意:我也尝试将其包含在我的php文件的顶部:

header('Content-type: json/application');

但仍未奏效 我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

请勿致电$.parseJSON。当您指定dataType: 'json'时,jQuery会自动执行此操作,因此data已包含该对象。

您还应学会使用参数化查询,而不是将变量替换为SQL。您的代码易受SQL注入攻击。