Javascript 在PHP和Ajax中使用Json传递值

Javascript 在PHP和Ajax中使用Json传递值,javascript,php,arrays,json,ajax,Javascript,Php,Arrays,Json,Ajax,我是Json的初学者。HTML表中包含一些值,需要使用json将这些值传递到prescription.php页面。我尝试过,但在ajax成功后,它在错误日志中显示了一条错误消息: e={readyState:4,getResponseHeader:ƒ,getAllResponseHeaders:ƒ,setRequestHeader:ƒ,OverrideMetype:ƒ,…} 以下是我的HTML代码段: <form method="post" id="prescriptionn" e

我是Json的初学者。HTML表中包含一些值,需要使用json将这些值传递到prescription.php页面。我尝试过,但在ajax成功后,它在错误日志中显示了一条错误消息:

e={readyState:4,getResponseHeader:ƒ,getAllResponseHeaders:ƒ,setRequestHeader:ƒ,OverrideMetype:ƒ,…}

以下是我的HTML代码段:

    <form method="post" id="prescriptionn" enctype="multipart/form-data">  
       <div class="table-responsive">
           <table class="table table-bordered mb-0" id="medical">
                <thead>
                    <tr>
                         <th>Medicine Name</th>
                         <th>Morning</th>
                         <th>Noon</th>
                         <th>Night</th>
                         <th> <button type="button" name="add" id="add" 
                                class="btn btn-success btn-xs"> + </button>  </th>

                     </tr>
                 </thead>
                 <tbody id="rows"> 
                 </tbody>
            </table>
                        <br><br>
             <div align="center">
                <input type="hidden" value="<?php echo $row['apt_id'] ?>" 
                          id="getapt" name="getapt" class="btn btn-primary">

                 <input type="hidden" value="<?php echo $row['p_id'] ?>" 
                          id="getpid" name="getpid" class="btn btn-primary">


                  <input type="button" name="submit" 
                           id="submit" class="btn btn-primary" value="Enter Prescription">

             </div>
            </div>
          </form>
以下是prescription.php页面中的php代码


我不知道我哪里出错了。非常感谢您的帮助

根据我在PHP代码中看到的内容,我理解您希望存储JSON index1的文本,因为它直接位于med_records sql元素下,您希望在尝试解码并提取两个值时将PARSE作为对象index2发送:

  $jsondata1 = json_decode($_POST["index2"]);

  echo $id= $jsondata1->getpid;
  echo $apt= $jsondata1->getapt;
因此,您应仅对其中一个进行解码,并将第二个保留为字符串:

$jsondata=$_POST[index1]; 作为$jsondata,您希望在数据库中以json字符串的形式存储,对吗?如果没有,请提供一些关于表的预期数据模式的信息


一定要知道你的代码不是很安全:首先,它应该验证是否发送了正确的值解码解析数据,检查预期的密钥,再次编码,还应该为会话中不再有用户id的情况做好准备。

删除数据类型:“JSON”@RiteshKhandekar I removed,ajax成功后,当我看到数据库未保存时,它会显示成功插入的记录。没有插入任何记录????mysqli_stmt_execute$stmt;谢谢它起作用了。在这里,当我从数据库中检索这些数据时,如何将这些数据分离并在HTML表格中的单独列中显示我强烈建议执行$.makeArraymodess;在实际存储之前,避免将length或prevObject等jQuery属性也发送到数据库中。然后,从数据库获取数据——例如变量$row中的每个记录,您可以简单地使用json_decode foreach:$medRecords=json_decode$row['med_records'];以及更高版本:foreach$medRecords为$key=>$object{echo'.$object->morning'.};`等是在我发送到prescription.php页面之前。你是什么意思?数据类型是:“JSON”还是其他什么?此设置不是必需的,因为实际上您将JSON封装为字符串,并使用标准post格式发送它们;。如何做到这一点?如何发送这些值??不带var medical=JSON.stringifymodess;
<?php

session_start();
require_once "../auth/dbconnection.php";

// if (isset(json_decode($_POST["data"])) {

  $jsondata = json_decode($_POST["index1"]);
  $jsondata1 = json_decode($_POST["index2"]);

  echo $id= $jsondata1->getpid;
  echo $apt= $jsondata1->getapt;

    if($stmt = mysqli_prepare($conn,"INSERT INTO prescription (apt_id,user_id,p_id, med_records,date) VALUES (?, ?, ?, ?, ?)")){

      $cur_date = date('Y-m-d H:i:s');

        $user_id= $_SESSION['user_id'];
        // $p_id= $_POST['getpid'];
        // $apt_id= $_POST['getapt'];

        mysqli_stmt_bind_param($stmt, "sssss",$apt,$user_id, $id,$jsondata,$cur_date);

       echo "Records inserted successfully.";

} else{

  echo "ERROR: Could not prepare query: $sql. " . mysqli_error($conn);

}

  mysqli_stmt_close($stmt);

?>
  $jsondata1 = json_decode($_POST["index2"]);

  echo $id= $jsondata1->getpid;
  echo $apt= $jsondata1->getapt;