在PHP脚本中使用POST和isset时,嵌套的ajax函数不会产生任何结果

在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

我编写了一个函数,其中包含一个嵌套的ajax函数,表单提交后将触发该函数。该函数的作用是提交表单数据,将新添加的数据库信息重新加载到表中,最后检查是否已将所有结果输入表中

在这个阶段,一旦单击submit按钮,什么都不会发生,但是一旦我删除PHP文件中的
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'])) {