我是Json
的初学者。 HTML table
中包含一些值,需要使用json
将这些值传递到prescription.php
页面。我尝试过,但是ajax
成功后,它在错误日志中显示一条错误消息:e = {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
这是我的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>
这是我的
ajax
电话<script>
$(document).ready(function(){
var count=0;
$(document).on('click','#add',function() {
count++;
var html= '';
html += '<tr>';
html += '<td id="medicinename"> <select name="med_name[]" id="med_name[]" class="form-control med_name" ><option value=""> Select Medicine</option> <?php echo fill_select_box($conn, "0"); ?></select></td>';
html += '<td id="mor"> <input type="text" name="morning[]" id="morning[]" class="form-control morning" /> </td>';
html += '<td id="noo"> <input type="text" name="noon[]" id="noon[]" class="form-control noon" /> </td>';
html += '<td id="nigh"> <input type="text" name="night[]" id="night[]" class="form-control night" /> </td>';
// html += '<td class="charge"> </td>';
html += '<td> <button type="button" name="remove" id="remove" class="btn btn-danger btn-xs remove" > - </button> </td>';
html += '</tr>';
$('#rows').append(html);
});
});
</script>
<script>
$(document).ready(function () {
$(document).on('click', '#submit', function () {
var getapt = $('#getapt').val();
var getpid = $('#getpid').val();
var ids={
'getapt': getapt,
'getpid': getpid,
}
var modess = $('#rows tr').map(function() {
let $tr = $(this);
return [ {
"medname": $(this).find('.med_name').val(),
"morning":$(this).find('.morning').val(),
"noon":$(this).find('.noon').val(),
"night": $(this).find('.night').val(),
} ]
console.log(modess);
});
var ids = JSON.stringify(ids);
var medical = JSON.stringify(modess);
$.ajax({
url: "adminquery/prescription.php", // Url to which the request is send
method: "POST", // Type of request to be send, called as method
data:{
index1: medical,
index2: ids
},
dataType:'json',
cache: false,
success: function(data){
alert('Items added');
},
error: function(e){
console.log(e);
}
})
});
});
</script>
这是
php
页面中的prescription.php
代码<?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);
?>
我不知道哪里出了问题。非常感谢您的帮助。
最佳答案
根据我在PHP代码中看到的信息,我了解到您希望将JSON index1
的文本存储在med_records
sql元素的正下方,并且您想在尝试发送PARSE AS OF OBJECT index2
时发送对其进行解码并提取两个值:
$jsondata1 = json_decode($_POST["index2"]);
echo $id= $jsondata1->getpid;
echo $apt= $jsondata1->getapt;
因此,您应该仅解码其中的一个,并将第二个保留为字符串:
$jsondata = $_POST["index1"];
您想将
$jsondata
作为json字符串存储在数据库中,对吗?如果否,请提供一些有关预期数据的信息(表的模式)。确保知道您的代码不是很安全:首先,它应该验证是否发送了正确的值(解码已解析的数据,检查期望的密钥,再次编码),还应该为没有用户的情况做好准备会话中的ID。