Ajax JSON.parse 不会填充所有数据

Posted

技术标签:

【中文标题】Ajax JSON.parse 不会填充所有数据【英文标题】:Ajax JSON.parse doesn't fill all data 【发布时间】:2021-06-06 22:17:01 【问题描述】:

对不起标题,我不知道如何命名正在发生的事情!

好的,所以我有一个 json.parse 将数据库数据放入其中的编辑模式。它正在工作并提取console.log上的所有数据库信息,它正在工作并填写标题输入框,但不是注释文本区域,它不会填充数据。我不确定我错过了什么,我认为它与文本区域有关,但不确定。下面是我的代码示例。感谢您的帮助。

模态表单:

<form action="#" method="POST" id="edit-note-form" class="px-3">
          <input type="hidden" name="note_id" id="note_id">
          <div class="form-group">
            <input type="text" id="title" name="title" class="form-control form-control-lg" placeholder="Enter Title"
              required>
          </div>

          <div class="form-group">
            <textarea name="note" id="note" class="form-control form-control-lg" placeholder="Write Note Here" rows="6"
              required></textarea>
          </div>

          <div class="form-group">
            <input type="submit" name="editNote" id="editNoteBtn" value="Edit Note"
              class="btn btn-info btn-block btn-lg">

AJAX 和 JSON.parse 代码:

$("body").on("click", ".editBtn", function(e) 
    e.preventDefault();

    // Get value from id
    edit_id = $(this).attr('id');

    $.ajax(
      url: 'assets/php/process.php',
      method: 'POST',
      data: 
        edit_id: edit_id
      ,
      success: function(response) 
        console.log(response);
        data = JSON.parse(response);
        $('#note_id').val(data.note_id);
        $('#title').val(data.title);
        $('#note').val(data.note);
      
    );
  );

Process.php 句柄:

if (isset($_POST['edit_id'])) 
    $note_id = $_POST['edit_id'];

    $row = $cuser->edit_note($note_id);
    echo json_encode($row);

方法:

public function edit_note($note_id)

    $sql = "SELECT * FROM notes WHERE note_id = :note_id";
    $stmt = $this->conn->prepare($sql);
    $stmt->execute(['note_id' => $note_id]);
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    return $result;

【问题讨论】:

代码看起来不错。填充标题后,尝试通过检查元素检查 textarea 值。也许数据在那里,但它不可见。否则你可以尝试.html().text() 而不是.val() 在textarea 我没有看到任何会阻止文本显示的内容,占位符文本会显示,但数据库数据不会显示。只有标题有效。尝试了 html() 和 text() 但仍然没有。我不知道发生了什么。 你试过console.log($('#node')) 吗?查看元素发生了什么 搞清楚发生了什么! 【参考方案1】:

Add Modal 和 Edit Modal 都有 id="note" 的字段。无论出于何种原因,它都不会影响标题字段,但是一旦我将编辑模式的注释字段设置为 id="edit_note" 它工作正常。感谢 Beshamber Chaukhwan 提醒我 console.log($("#note") 它让我知道有两个字段。

【讨论】:

乐于助人?

以上是关于Ajax JSON.parse 不会填充所有数据的主要内容,如果未能解决你的问题,请参考以下文章

Django:使用 ajax 查询(字符串/Json)时出现格式问题

Ajax提交数据SpringBoot后台报错“HttpMessageNotReadableException: JSON parse error: Cannot construct instance“

Joomla JSON.parse:JSON 数据后出现意外的非空白字符

Django之Ajax

js面试题,ajax请求时,如何解释json数据

Select2 - Ajax 数据 - 根据查询填充下拉列表