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

时间:2014-08-14 11:30:21

标签: javascript php

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

到目前为止,我的代码基本上是这样的(在文件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脚本中进行检查我不会# 39;知道如何将错误消息传回newtask.php网页。

任何帮助或建议?

4 个答案:

答案 0 :(得分:0)

你可以做两层检查。您可以先使用javascript验证表单,如果通过,则可以使用$(&#39;#&#39; + formid).submit()按常规提交表单(注意,请提供您的ID属性)。然后您也可以检查后端,如果出现问题,您可以将错误发送回页面。

现在,将错误发送回页面的问题是如何在输入全部仍然存在的情况下返回上一页,因为典型的表单提交实际上会将请求发送到处理页面。我学到的一个技巧是,您可以将表单提交给iframe,该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>

在后端,您正常处理,但不是将状态回显给浏览器,您可以执行类似的操作。在这个例子中,如果处理成功,我发回一个&#34;状态&#34; &#34; 1&#34;

    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!')
        }
    }

答案 1 :(得分:0)

最简单的KISS解决方案是让代码负责在与表单相同的文件中添加任务(和验证表单)。如果无法添加任务,这也可以让您轻松保留所有填写了提交数据的表单元素。

您可以通过命名提交按钮(添加名称属性)检查表单是否已提交,然后检查是否在$ _POST数组中设置。

答案 2 :(得分:0)

制作一个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>

答案 3 :(得分:0)

在addtask.php文件中创建一个向数据库添加记录的函数可能是addRecord()。在newtask.php文件中包含该文件。如果验证传递使用POST数据调用函数addRecord(),或者如果验证失败则在表单上方显示验证错误,请在表单提交上对newtask.php而不是addtask.php执行表单提交。

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

希望有所帮助