Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在弹出窗口中显示错误消息,而不是移动到新页面?_Php_Javascript_Jquery_Popup_Alert - Fatal编程技术网

Php 如何在弹出窗口中显示错误消息,而不是移动到新页面?

Php 如何在弹出窗口中显示错误消息,而不是移动到新页面?,php,javascript,jquery,popup,alert,Php,Javascript,Jquery,Popup,Alert,我是新来php的,我也是新来这里的,我不知道我以这样长的方式问一个问题是否合适。如果这里不是这样的话,我很抱歉 我有以下用于输入问题的代码,它有四个选项 在文本框中输入4个选项,每个选项对应一个单选按钮 在这4个按钮中单击的按钮的值为$correct $difflevel、$agegroup和$catId也是一组单选按钮的值 下面是我的代码 if(isset($_POST['submit'])) { extract($_POST); $question=my

我是新来php的,我也是新来这里的,我不知道我以这样长的方式问一个问题是否合适。如果这里不是这样的话,我很抱歉

  • 我有以下用于输入问题的代码,它有四个选项
  • 在文本框中输入4个选项,每个选项对应一个单选按钮
  • 在这4个按钮中单击的按钮的值为$correct
  • $difflevel、$agegroup和$catId也是一组单选按钮的值
下面是我的代码

    if(isset($_POST['submit']))
    {

    extract($_POST);
    $question=mysqli_real_escape_string($con,$question);
    $option[0]=mysqli_real_escape_string($con,$option[0]);
    $option[1]=mysqli_real_escape_string($con,$option[1]);
    $option[2]=mysqli_real_escape_string($con,$option[2]);
    $option[3]=mysqli_real_escape_string($con,$option[3]);

    mysqli_query($con,"insert into questions(question, op1,op2,op3,op4,correct,difflevel,ageGroup,catId) values
    ('$question','$option[0]','$option[1]','$option[2]','$option[3]',$correct,$difflevel,$ageGroup,$catId)") or die("Some error");

    $questionId = mysqli_insert_id($con);

    if($_POST['catId']=="")//QUESTIONS MUST CONTAIN AT LEAST ONE CATEGORY
        die("Please select category of the question entered.");

    if($_POST['difflevel']=="")//DIFFICULTY LEVEL SHOULD BE SET
        die("Please select difficulty of the question entered.");

    if($_POST['ageGroup']=="")//AGEGROUP SHOULD BE SET
        die("Please select age group of the question entered.");

    if($_POST['correct']=="")//CORRECT ANSWER SHOULD BE SET
        die("Please select correct answer for the question entered.");
    }
由于所有字段都是必需的,如果不是全部填写(或单击),我需要一个错误报告。现在,当错误发生时,它会被带到一个新页面,因此我键入的所有内容都会丢失,我必须再次键入。 因此,不必转到下一页,是否可以显示带有错误的弹出窗口,以便我可以更正错误并从停止的位置继续?
非常感谢您的帮助。提前感谢。

使用JavaScript
alert

    <?php
if(isset($_POST['submit']))
{

    extract($_POST);
    $question=mysqli_real_escape_string($con,$question);
    $option[0]=mysqli_real_escape_string($con,$option[0]);
    $option[1]=mysqli_real_escape_string($con,$option[1]);
    $option[2]=mysqli_real_escape_string($con,$option[2]);
    $option[3]=mysqli_real_escape_string($con,$option[3]);

    mysqli_query($con,"insert into questions(question, op1,op2,op3,op4,correct,difflevel,ageGroup,catId) values
    ('$question','$option[0]','$option[1]','$option[2]','$option[3]',$correct,$difflevel,$ageGroup,$catId)") or die("Some error");

    $questionId = mysqli_insert_id($con);

    if($_POST['catId']=="")//QUESTIONS MUST CONTAIN AT LEAST ONE CATEGORY
        echo "<script>alert('Please select category of the question entered.')</script>";
    exit;
        //die("Please select category of the question entered.");

    if($_POST['difflevel']=="")//DIFFICULTY LEVEL SHOULD BE SET
        echo "<script>alert('Please select difficulty of the question entered')</script>";
    exit;

    if($_POST['ageGroup']=="")//AGEGROUP SHOULD BE SET
        echo "<script>alert('Please select age group of the question entered.')</script>";
    exit;

    if($_POST['correct']=="")//CORRECT ANSWER SHOULD BE SET
        echo "<script>alert('Please select correct answer for the question entered.')</script>";
    exit;
}

您可以使用java脚本验证。因此,如果有人试图提交表单而不填写必填字段,您可以弹出一条警告消息。jQuery验证库可以很好地处理这个问题。

如果您允许用户通过单击提交按钮发布表单,页面将重定向到表单标记的操作参数。然后,您将丢失表单上输入的所有数据。使用这种方法可以解决这个问题,但它有点古怪

但是,不要使用标准的html表单元素发布表单,而是使用AJAX发布表单,这样页面就不会重定向/刷新,所有以前输入的表单数据都将被保留。然后解析响应文本并相应地放置相应的错误消息

以下是一个例子:

<form>
    <input type="text" id="someText" value="" /><br />
    <button id="submit_button">Submit</button>
</form>

<script type="text/javascript">

$(function(){
    $("#submit_button").click(function(){
        var someText = $("#someText").val();
        $.post("/handle_ajax.php",{someText:someText},function(resp){
            if(resp !== "OK"){
                alert("ERROR OCCURED "+resp)
            }
        });
    });
});

</script>


提交 $(函数(){ $(“#提交按钮”)。单击(函数(){ var someText=$(“#someText”).val(); $.post(“/handle_ajax.php”,{someText:someText},函数(resp){ 如果(响应)=“正常”){ 警报(“发生错误”+响应) } }); }); });
下面是非常简单的php ajax处理程序

<?php

if(empty($_POST["someText"])){
    echo "someText field cannot be left blank";
}else{
    echo    "OK";
}

?>


现在,如果你想让人觉得别扭,不要提醒错误消息,而是将所有错误消息以漂亮的html格式放到表单中,如果一切正常,请清除它们。

对不起。您不熟悉PHP,而是熟悉丑陋的古老PHP。你还没见过当代PHP。你能告诉我如何用当代PHP重写代码吗?你可以从这里开始:关于这个问题,谢谢。我最近开始学习PHP,对框架一无所知。我用古老的PHP制作了一个相当大的应用程序。将其转换为框架代码对我来说很困难。我已经开始学习CodeIgniter了。再次感谢你的建议。