javascript - 如何将控制台错误显示为验证错误?

标签 javascript php jquery

我有一个表单,在提交时会进行一些验证检查,然后运行函数来请求 token 。如果提交不成功,错误消息为 POST 403(禁止)。我想使用此错误消息(或任何其他推荐的方式)在 php 网页上显示错误消息。我怎样才能做到这一点?

使用用户名和密码输入获取 token 并保存在 session 中


    function getToken(username, password) {


        $.ajax({
            url: RESTROOT + '/jwt-auth/v1/token',
    method: 'POST',
    data: {
        'username': username,
        'password': password

    }
        })

        .done(function(response){
            sessionStorage.setItem('newToken', response.token); //sets the key and value in the console application > session storage
                    $LOGIN.fadeToggle();
            $LOGOUT.toggle();
             $POST.fadeToggle();

        })
    }

测试登录表单输入



    <?php $usernameErr = $passwordErr = "";
    $error = false;

    if (empty($_POST["firstname"])) {
        $usernameErr = "Name is required";
        $error = true;
      } else {
        $username = test_input($_POST["username"]);
        // check if field contains only letters and spaces
        if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
      $usernameErr = "Only letters and white space allowed";
    }
      }

    if (empty($_POST["password"])) {
        $passwordErr = "Password is required";
        $error = true;
      } else {
        $password = test_input($_POST["password"]);
        // check if field contains only letters and spaces
        if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
      $passwordErr = "Only letters and white space allowed";
    }
      }

    if($error == false){
      $_SESSION['username'] = $username;
    }

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }

    ?>

登录表格





    <form name="loginform" id="loginform" style="display: none" >
    <h2>Login form</h2>
    <p><strong>You must log in with valid credentials before you are able to submit a post.</p></strong>

    <label for"uer_login">Username:<span class="error">* <?php echo $usernameErr;?></span> <!-- shows errors on the page -->
    <input type="text" id="user_login" name="username" class="input" value="<?php echo $username;?>" placeholder="username"></label>

    <label for"user_pass">Password:<span class="error">* <?php echo $passwordErr;?></span> <!-- shows errors on the page -->
      <input type="password" id="user_pass" name="pass" class="input" value="" placeholder="Title"></label>

      <button id="login_button" type="submit" class="success button"> Login</button>
      </form>

最佳答案

您需要通过添加以下内容来捕获请求中的错误:

.catch((error)=>{
    console.log({error});
})

.done(...)之后的 promise

因此 getToken 函数的主体将是:

$.ajax({
    url: RESTROOT + '/jwt-auth/v1/token',
    method: 'POST',
    data: {
        'username': username,
        'password': password

    }
})
    //i usually use then(...) instead of done(...)
    .then((response) => {
        sessionStorage.setItem('newToken', response.token); //sets the key and value in the console application > session storage
        $LOGIN.fadeToggle();
        $LOGOUT.toggle();
        $POST.fadeToggle();

    })
    .catch((error) => {
        console.log({ error });
    })

现在您可以在 catch 中读取错误,您可以向 HTML 添加一个 div 并将错误详细信息附加到其中

.catch ((error) => {
    console.log({ error });
    //be sure to read error object properties and pick one of them to append it
    //usually error from server should have an inner message                    
    document.getElementById('ServerErrorDiv').innerHtml(error.message)
})

关于javascript - 如何将控制台错误显示为验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61027500/

相关文章:

javascript - 批量删除%LOCALAPPDATA%中的文件夹

php - 实时评论更新无需重新加载 PHP 页面可能吗?

jquery - 在jquery中选择一个字符

JavaScript - 测试整数

javascript - 如何在生成随机十六进制颜色代码时排除所有灰色阴影?

php - 如何无误地删除所有 Woocommerce 结账账单字段

php - CakePHP - 无法在 View 中获取 session 变量

javascript - 如何设置一个带有计时器的循环,该循环发出 ajax 请求,直到收到响应

javascript - 如何将 GridView ID 和其他控件传递到 jQuery 函数中?

javascript - 更新 ember-cli 2.11.0 版本后如何使用 npm 代替 Bower?