如何从php脚本返回检查值到调用页面

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

本文关键字:调用 检查 返回 php 脚本      更新时间:2023-09-26

嗨:我对整个网络场景都很陌生。我试图做一个页面,用户必须输入一些信息,然后我要做的是检查它的格式,如果它是正确的添加到数据库。如果不是,则必须显示错误消息。

到目前为止,我的代码基本上是这样的(在文件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网页。

有什么帮助或建议吗?

在addtask.php文件中创建一个addRecord()函数,用于向数据库添加记录。将该文件包含在newtask.php文件中。在newtask.php上发布表单,而不是在表单提交上发布addtask.php,对字段进行验证,如果验证通过,调用函数addRecord()与post数据,否则如果验证失败,则显示表单上方的验证错误。

验证可以使用自定义代码完成,也可以使用phpclasses.org中的一些类

希望有所帮助

你可以做两层检查。你可以使用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解决方案是将负责添加任务(和验证表单)的代码保留在与表单相同的文件中。如果无法添加任务,这也将使您可以轻松地将所有表单元素填充为提交的数据。

您可以通过命名提交按钮(添加name属性)来检查表单是否已提交,然后检查它是否在$_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>