AJAX在模式窗体中显示错误而不重新加载页面

时间:2017-06-14 01:33:30

标签: php jquery ajax

我在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.');
    }
});

});

1 个答案:

答案 0 :(得分:0)

在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);
}