在PHP脚本中使用POST和isset时,嵌套的ajax函数不会产生任何结果
我编写了一个函数,其中包含一个嵌套的ajax函数,表单提交后将触发该函数。该函数的作用是提交表单数据,将新添加的数据库信息重新加载到表中,最后检查是否已将所有结果输入表中 在这个阶段,一旦单击submit按钮,什么都不会发生,但是一旦我删除PHP文件中的在PHP脚本中使用POST和isset时,嵌套的ajax函数不会产生任何结果,php,jquery,ajax,Php,Jquery,Ajax,我编写了一个函数,其中包含一个嵌套的ajax函数,表单提交后将触发该函数。该函数的作用是提交表单数据,将新添加的数据库信息重新加载到表中,最后检查是否已将所有结果输入表中 在这个阶段,一旦单击submit按钮,什么都不会发生,但是一旦我删除PHP文件中的if(isset($\u POST['submit']),代码就会工作,尽管它会给出一些未定义的索引错误。无论使用isset,检查是否输入了所有结果的ajax代码的最后一部分始终有效 为什么ajax不允许(isset($\u POST['subm
if(isset($\u POST['submit'])
,代码就会工作,尽管它会给出一些未定义的索引错误。无论使用isset
,检查是否输入了所有结果的ajax代码的最后一部分始终有效
为什么ajax不允许(isset($\u POST['submit'])
与url对话:“../server/insert\u tests.php?submit”,
?这个问题有可能解决吗
这是提交表单后将调用的Ajax函数:
function formSubmit() {
$.ajax({
type: "POST",
url: "../server/insert_tests.php?submit",
data: $('#frmBox').serialize(),
success: function(message){
$('#success').html(message).fadeIn('fast').delay(3000).fadeOut('slow');
var sample_id = $("#sample_id").val();
var url = "../server/insert_tests.php?query=";
$.ajax({
type: "GET",
url: url + sample_id,
success: function(results) {
$("#tests").html(results);
var order_id = $("#order_id").val();
var url2 = "../server/insert_tests.php?button_message=";
$.ajax({
type: "GET",
url: url2 + order_id,
success: function(button) {
$("#button_message").html(button);
}
});
}
});
}
});
var form = document.getElementById('frmBox').reset();
return false;
}
表格如下:
<div class="result_input">
<form id="frmBox" onsubmit="return formSubmit();">
<table id="tests">
</table>
<input type="submit" id="submit" value="Submit Result" style="width: 50%;border-radius: 5px; background-color: white; border: 2px solid green;color: green;">
</form>
</div>
而PHP:
session_start();
//Current time as "hour:min:seconds" for all time stamps
$time = date("H:i:s");
//Current date as "year-month-day" for all date stamps
$date = date("Y-m-d");
$output = '';
$analyst = '';
$order_id = '';
require 'dbh.php';
$analyst = $_SESSION['logged_in_id'];
if (isset($_POST['submit'])) {
$n = test_input(count($_POST['result_id']));
for($i = 0; $i<$n; ++$i) {
$result_id =test_input($_POST['result_id'][$i]);
$order_id = test_input($_POST['order_id'][$i]);
$sample_id = test_input($_POST['sample_id'][$i]);
$detected = test_input($_POST['detected'][$i]);
$result = test_input($_POST['result'][$i]);
$m_analysis_id = test_input($_POST['m_analysis_id'][$i]);
if ($result_id == '') {
$sql = "INSERT INTO results_database (order_id, sample_id, detected, result, m_analysis_id, analyst) VALUES ('$order_id', '$sample_id', '$detected', '$result', '$m_analysis_id', '$analyst');";
mysqli_query($conn, $sql);
} else {
$sql = "UPDATE results_database SET order_id='$order_id', sample_id='$sample_id', detected='$detected', result='$result', m_analysis_id='$m_analysis_id', analyst='$analyst' WHERE id='$result_id';";
mysqli_query($conn, $sql);
}
}
$order_id1 = test_input($_POST['order_id'][0]);
$sample_id1 = test_input($_POST['sample_id'][0]);
$sql1 = "UPDATE samples_database SET s_status='Analysis Started', s_time1='$time', s_date1='$date' WHERE id='$sample_id1';";
$sql1 .= "UPDATE order_database SET order_status='Analysis Started' WHERE id='$order_id1';";
mysqli_multi_query($conn, $sql1);
$output1 = '';
$output1 .= '<h3 style="text-align:center;color:green;">Result was successfully added!</h3>';
echo $output1;
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
}
if (isset($_GET['query'])) {
require 'dbh.php';
$id = $_GET['query'];
$query = "SELECT * FROM samples_database WHERE sample_id=$id;";
$result = mysqli_query($conn, $query);
$input = mysqli_fetch_array($result);
$input1 = $input['micro_analysis'];
$env_sam_id = $input['env_sam_id'];
$c_sam_id = $input['c_sam_id'];
$order_id = $input['order_id'];
$rows = explode(',', $input1);
if (count($rows) > 0 ) {
$output .= '
<thead>
<tr>
<th colspan="1"></th>
<th>Tests ('.$env_sam_id.' <i>'.$c_sam_id.'</i>)</th>
<th>Detected</th>
<th>Result</th>
</tr>
</thead>
<tbody>';
foreach ($rows as $row) {
$query2 = "SELECT * FROM microbiology_analysis_database WHERE id=$row";
$result2 = mysqli_query($conn, $query2);
$input2 = mysqli_fetch_array($result2);
$analysis = $input2['m_analysis'];
$query3 = "SELECT * FROM results_database WHERE m_analysis_id=$row AND order_id=$order_id AND sample_id=$id;";
$result3 = mysqli_query($conn, $query3);
$input3 = mysqli_fetch_array($result3);
$result_id = $input3['id'];
$result = $input3['result'];
$detected = $input3['detected'];
$output .=
'<tr>
<td>
<input class="hidden" name="result_id[]" id="result_id" value="'.$result_id.'" readonly>
<input class="hidden" name="m_analysis_id[]" id="m_analysis_id" value="'.$row.'" readonly>
<input class="hidden" name="order_id[]" id="order_id" value="'.$order_id.'" readonly>
<input class="hidden" name="sample_id[]" id="sample_id" value="'.$id.'" readonly></td>
<td>'.$analysis.'</td>
<td><input name="detected[]" class="result_input" type="text" id="detected" value="'.$detected.'"></td>
<td><input name="result[]" class="result_input" type="text" id="result" value="'.$result.'"></td>
</tr>';
}
$output .= '</tbody> ';
}
echo $output;
}
if (isset($_GET['button_message'])) {
require 'dbh.php';
$order_id = $_GET['button_message'];
$sql = "SELECT * FROM samples_database WHERE order_id = $order_id AND micro_analysis !='';";
$end_result = 0;
$count_query = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($count_query)) {
$end_result += substr_count($row['micro_analysis'], ",") + 1;
}
$sql2 = "SELECT * FROM results_database WHERE order_id = $order_id AND m_analysis_id !='' AND detected !='';";
$count_query2 = mysqli_query($conn, $sql2);
$end_result2 = mysqli_num_rows($count_query2);
$output2 = '';
if ($end_result !== $end_result2) {
$output2 .= '<h3 style="color: darkred;text-align: center;">Analysis not yet completed for report submission! Total analyses: '.$end_result.' Results entered: '.$end_result2.'</h3>';
} else {
$output2 .= '<a type="button" style="text-decoration:none;color:white;" href="../server/server.php?complete_m_results='.$order_id.'"><button style="width: 50%;border-radius: 5px; background-color: white; border: 2px solid green;color: green;" type="button" class="button">Complete Order</button></a>';
}
echo $output2;
}
session_start();
//所有时间戳的当前时间为“小时:分钟:秒”
$time=日期(“H:i:s”);
//所有日期戳的当前日期为“年-月-日”
$date=日期(“Y-m-d”);
$output='';
$analyst='';
$order_id='';
需要'dbh.php';
$analyst=$_会话['logged_in_id'];
如果(isset($_POST['submit'])){
$n=测试输入(计数($POST['result\u id']);
对于($i=0;$i 0){
$output.='
测试(“.$env_sam_id.”“.$c_sam_id.”)
检测
结果
';
foreach($行作为$行){
$query2=“从微生物分析数据库中选择*,其中id=$row”;
$result2=mysqli\u查询($conn,$query2);
$input2=mysqli\u fetch\u数组($result2);
$analysis=$input2['m_analysis'];
$query3=“从结果_数据库中选择*,其中m_分析_id=$row和order_id=$order_id和sample_id=$id;”;
$result3=mysqli_查询($conn,$query3);
$input3=mysqli\u fetch\u数组($result3);
$result_id=$input3['id'];
$result=$input3['result'];
$detected=$input3['detected'];
$output.=
'
“.$analysis。”
';
}
$output.='';
}
echo$输出;
}
如果(isset($\u GET['button\u message'])){
需要'dbh.php';
$order\u id=$\u GET['button\u message'];
$sql=“从样本数据库中选择*,其中订单id=$order\U id和micro\U分析!=''”;
$end_result=0;
$count\u query=mysqli\u query($conn,$sql);
while($row=mysqli\u fetch\u assoc($count\u query)){
$end_result+=子行计数($row['micro_analysis'],“,”)+1;
}
$sql2=“从结果\u数据库中选择*,其中order\u id=$order\u id和m\u analysis\u id!=''和detected!='';
$count\u query2=mysqli\u查询($conn,$sql2);
$end\u result2=mysqli\u num\u行($count\u query2);
$output2='';
如果($end_result!=$end_result2){
$output2.='报告提交的分析尚未完成!分析总数:'.$end_result.'输入的结果:'.$end_result2'.';
}否则{
$output2.='';
}
echo$output2;
}
作为URL一部分提交的参数,例如?提交
需要通过$\u GET
,而不是$\u POST
访问。从手册中:
通过URL参数(又名.query字符串)传递给当前脚本的变量的关联数组请注意,不仅为GET请求填充数组,而且为具有查询字符串的所有请求填充数组。
因此,在代码中,您应该更改:
if (isset($_POST['submit'])) {
到
好的,所以我删除了
?submit
,现在我得到了很多未定义的索引通知错误…保留?submit
,但是你需要检查if(isset($\u get['submit']){
,而不是if(isset($\u POST['submit'])){
@roelofco不用担心。很高兴我能帮上忙。你为什么不直接使用$post
?比如var sbmt=$('#frmBox').serialize();$.post('../server/insert_tests.php',{submit:sbmt}函数(数据){/*成功后要做的可选工作*/})
if (isset($_GET['submit'])) {