簡體   English   中英

如何將檢查值從php腳本返回到調用頁面?

[英]How to return check value from a php script to the calling page?

嗨:我是整個網絡領域的新手。 我正在嘗試做一個頁面,用戶必須在其中輸入一些信息,然后我要檢查的是它的格式以及是否正確添加到數據庫中。 如果不是,則必須顯示錯誤消息。

到目前為止,我的代碼基本上是這樣(在文件newtask.php中):

<form action="addtask.php" method="post" name="newtaskform">

<!-- The form itself, a bunch of fields -->

<input type="submit" value="Agregar nueva tarea">
</form>

當我單擊提交時,它會調用修改數據庫的addtask.php腳本。 這已經在工作了。 我想添加代碼以檢查表單中提交的數據的格式。 但是我希望錯誤消息出現在newtask.php(用戶輸入網頁)中。 我的問題是,如果我使用javascript函數檢查數據,則必須使用ajax來調用addtask.php(如果可能,我想盡量避免這樣做),並且如果我在addtask.php腳本中進行檢查,我不會不知道如何將錯誤消息傳達回newtask.php網頁。

有什么幫助或建議嗎?

您可以進行兩層檢查。 您可以使用javascript首先驗證表單,如果表單通過,則可以使用$('#'+ formid).submit()照常提交表單(請注意,提供您的ID屬性)。 然后,您也可以檢查后端,如果出現問題,可以將錯誤發送回頁面。

現在,將錯誤發送回頁面的問題是如何在所有輸入仍然保留的情況下返回上一頁,因為典型的表單提交實際上會將請求發送到處理頁面。 我學到的一個技巧是,您可以將表單提交到iframe,該框架將頁面提交到后端而無需重新加載前端頁面

<FORM name='iform' id='iform' method='POST' action='addtask.php' TARGET='submitiframe' accept-charset='UTF-8'>

並在頁面底部添加此代碼

<IFRAME STYLE='border:0px;display:none;' id='submitiframe'></iframe>

在后端,您可以正常進行處理,而不是將狀態回顯到瀏覽器,而是可以執行以下操作。 在此示例中,如果處理成功,我會發回“ 1”的“狀態”

    echo "<!DOCTYPE HTML>
        <HTML>
        <HEAD>
            <script type='text/javascript' src='/js/jquery-1.10.2.min.js'></script>
            <script type='text/javascript'>
                $(document).ready(function() {
                    $(window).load(function() {
                        var r = $('#response').html();
                        parent.getresult(r);
                    });
                });
            </script>
        </HEAD>
        <BODY>
        <DIV ID='response'>".json_encode(Array("status"=>$status))."</DIV>
        </BODY>
        </HTML>";
exit();

在前端頁面上,您將具有相應的JavaScript代碼來捕獲此請求並處理成功或失敗

        function getresult(text) {
        try {
            var rc = $.parseJSON(text);
            if(parseInt(rc.status)  == 1) 
                location.reload();
            else
                alert (rc.msg);
        }
        catch(e) {
            alert('Something went wrong!')
        }
    }

最簡單的KISS解決方案是讓代碼負責在與表單相同的文件中添加任務(並驗證表單)。 如果無法添加任務,這也將使您輕松地使所有表單元素都充滿提交的數據。

您可以通過命名“提交”按鈕(添加名稱屬性)來檢查表單是否已提交,然后檢查是否在$ _POST數組中設置了表單。

制作一個PHP文件。 這僅用於您的演示。

<?php

if(isset($_POST['submit'])) {
//IF FORM IS SUBMITTED
if($_POST['name'] == '') {
//NAME IS BLANK
$flag = 0;
}
else {
// SQL QUERY TO INSERT DATA
$flag = 1;
}

}

?>

<?php

if(isset($flag)) {

if($flag == 1) {
echo "Data inserted successfully";
}
else {
echo "Name is blank";
}

}

?>

<form action="" method="post" name="newtaskform">
<!-- The form itself, a bunch of fields -->
<input type="" name="name">
<input type="submit" value="submit" name="submit"> 
</form>

在addtask.php文件中創建一個用於將記錄添加到數據庫的函數可以是addRecord()。 將該文件包含在newtask.php文件中。 如果驗證通過傳遞帶有POST數據的函數addRecord(),或者在驗證失敗時顯示在表單上方的驗證錯誤,則在newtask.php上的窗體上發帖,而不是在表單上的addtask.php上進行字段驗證。

驗證可以使用您的自定義代碼完成,也可以使用phpclasses.org中的某些類

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM