暂停表单提交以等待PHP

时间:2018-01-24 11:11:29

标签: javascript php html

我有一个表单,我可以使用提交按钮提交。当我按下这个提交按钮时,我会看到一个弹出窗口,询问是否有“密码”(rfid)。这是由另一个表单处理,该表单POST密码以便PHP处理验证过程。如果密码已确认,我希望它返回并提交第一个表单,以便POST该内容。我只是想不出任何方式回到第一个表单提交。

弹出窗口由表单元素的onSubmit =“”处理,并调用一个使弹出窗口显示的JavaScript函数。

这是我的两种形式:

<form id="klausur" action="php/action_klausur.php" method="post" onSubmit="return getRFID();">
      <div class="selections">
		</p>
   		<p><span class="tag">Fach</span>
      	<select name="fach" class="minimal">
      		<?php
				populate_fach();
			?>
      	</select>
		</p>
    	<p><span class="tag">Tag</span>
      	<select name="tag" class="minimal">
      		<option value="M">Montag</option>
      		<option value="D">Dienstag</option>
      		<option value="Mi">Mittwoch</option>
      		<option value="Do">Donnerstag</option>
      		<option value="F">Freitag</option>
      	</select>
		</p>
    	<p><span class="tag">Block</span>
      	<select name="block" class="minimal">
      		<option value="1">07:30 - 09:00</option>
      		<option value="2">09:25 - 10:55</option>
      		<option value="3">11:15 - 12:45</option>
      		<option value="4">13:30 - 15:00</option>
      		<option value="5">15:15 - 16:45</option>
      	</select>
		</p>
    	</div>
     	<input type="submit" class="block" value="ABSENDEN">
      </form>

<form id="rfid_field" action="php/check_rfid.php" method="post">
			<input type="text" name="rfid" id="rfid" class="rfid" autofocus>
		</form>

这是显示弹出窗口的JavaScript代码段:

function getRFID(){
	"use strict";
	var modal = document.getElementById('rfidPopup');
	modal.style.display = "block";
	return false;
}

所以我的问题基本上是:当密码检查结果为正时,我如何回到第一次提交表单?

编辑:从应重定向的第二种形式添加PHP代码:

<?php
//Fügt die Funktionen der Datei database_con.php hinzu
include 'database_con.php';

//Speichert den Inhalt des RFID Feldes in die Variable $rfid
$rfid = $_POST["rfid"];

//Öffnet eine Verbindung zur Datenbank
open_connection();
global $conn;

$query = "SELECT Lehrer_RFID from Lehrer";
$result = $conn->query($query);
$rows = resultsToArry($result);
//Gibt alle Infos über die Variable aus zum testen
//var_dump($rows);
if(verifyRFID($rfid, $rows)){

}

$result->free();

function resultsToArry($result){
    $rows = array();
    while($row = $result->fetch_assoc()){
        $rows[] = $row;
    }
    return $rows;
}

function verifyRFID($rfid, $rows){
    foreach ($rows as $value) {
        if($value == $rfid) {
            return true;
        }
    }
    return false;
}
?>

1 个答案:

答案 0 :(得分:0)

由于您使用的是PHP,因此表单提交将重新加载页面。当一个表单提交依赖于另一个表单时,表单应该异步提交。这里jQuery ajax会有所帮助

&#13;
&#13;
$(document).ready(function(){

  $("#rfidPopUpForm").submit(function(e) {
    e.preventDefault();
    if(submitForm(this)) {
      submitForm($('#mainForm'))
    };
    
  });
  
  function submitForm(form) {
    
    var data = {};
    $.each(form, function(i, v){
        var input = $(v);
        data[input.attr("name")] = input.val();
        delete data["undefined"];
    });
    return $.ajax({
        contentType:"application/json; charset=utf-8",
        type:form.attr("method"),
        url:form.attr("action"),
        dataType:'json',
        data:JSON.stringify(data),
        success:function(data) {
           console.log(data)
        }
    });
  
  }
})
&#13;
&#13;
&#13;

注意:它不是一个完整的解决方案。因此,不要指望它会按原样运行。我已经通过某种假设写了这个。

希望这有帮助!

-AG