繁体   English   中英

AJAX在不重新加载页面的情况下以模式形式显示错误

[英]AJAX Show error in the modal form without reloading the page

我在index.php中有两种模式形式,一种用于登录,一种用于注册。 从登录模式中,您可以访问注册表。 我想以寄存器模式形式显示错误而不重新加载页面或重定向到另一个页面。 我使用ajax,但是提交后,页面重定向到空白页面register.php并显示1。

在注册表中,我有一个空的div

<div id = "error-reg"></div>

register.php是表单的动作,看起来像

 if ($count == 0) {
    if ($check == 1)
        $query = "INSERT INTO ..
    elseif ($check == 2)
        $query = "INSERT INTO ..
    else {
        $query = "INSERT INTO ..
    }

    if ($db->query($query)) {
        echo "1";
    } else {
        echo "2";
    }
} else {
    echo "3";
}

在js中我有

$("#btn-rg").on('submit',function (e) {
     e.preventDefault();
     var form=$(this);
     $.ajax({
        url : 'register.php',
        type : 'POST',
        data : $('#id02').serialize(),
        success : function (msg) {
            if(msg=="1") $('#error-reg').html('success');
        },
        error: function (msg) {
             if(msg=="2") $('#error-reg').html('Error while registering.Please try again');
              if(msg=="3") $('#error-reg').html('The username already exists.');
    }
});

});

在php中,您只需回显一个数字,浏览器就会将其解释为成功。

您可以更改您的js文件:

$("#btn-rg").on('submit', function(e) {
     e.preventDefault();
     var form = $(this);
     $.ajax({
        url: 'register.php',
        type: 'POST',
        data: $('#id02').serialize(),
        success: function(msg) {
            if (msg == "1") $('#error-reg').html('success');
            if (msg == "2") $('#error-reg').html('Error while registering.Please try again');
            if (msg == "3") $('#error-reg').html('The username already exists.');
        }
    });
});

不确定是否可以使用,您可以通过抛出http错误代码来调整php文件来实现。

if ($count == 0) {
    if ($check == 1)
        $query = "INSERT INTO .."
    else if ($check == 2)
        $query = "INSERT INTO .."
    else {
        $query = "INSERT INTO .."
    }

    if ($db->query($query)) {
        echo "1";
    } else {
        echo "2";
        http_response_code(400);
    }
} else {
    echo "3";
    http_response_code(400);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM