首页 > 解决方案 > 未捕获的 ReferenceError:未定义 jqXHR

问题描述

我正在尝试使用 jquery 提交登录表单(这是一个弹出 div)。如果表单验证失败,那么我只想在弹出 div 上显示错误消息,并在 ajax 调用进入错误函数时重新加载页面时停止关闭该表单(弹出)。这是我的js代码

$("#loginForm").submit(function(e) {
    var email    = $(".log-email").val();
    var password = $(".log-pass").val();

    e.preventDefault();

    $.ajax({
        type: "POST",
        url: "/login",
        dataType: "json",
        data: {password:password, email:email},
        success : function(data){
            console.log(data);
            window.location.href= data.redirecturl;
        },
        error:function(XMLHttpRequest,jqXHR, thrownError,ajaxOptions){
            var errors = XMLHttpRequest.responseJSON;
            console.log(XMLHttpRequest);
            if(errors)
            {
                $(".login-error").text(errors.email);
                $(".login-error").css("color","red");
            }
            // e.preventDefault();
            jqXHR.error();
            return false;
        }
    });
    // .fail(function(){
    //     e.preventDefault();
    //     e.stopPropagation();
    // });
});

和刀片(HTML)代码看起来像,

<form id="loginForm">
    {{ Form::email('email', null, ['class' => 'vbg-input log-email', 'maxlength' => '191', 'required' => 'required', 'autofocus' => 'autofocus', 'placeholder' => trans('validation.attributes.frontend.email')]) }}

    {{ Form::password('password', ['class' => 'vbg-input log-pass', 'required' => 'required', 'placeholder' => trans('validation.attributes.frontend.password')]) }}

    <a href="" class="forgot-passw">Forgot Your Password?</a>
    <button class="sign-in hover-animation">
         <span> {{trans('labels.frontend.auth.login_button')}} </span>
    </button>
</form>

我尝试了各种方法,但没有成功,没有错误。当我使用jqXHR.error(); 我能够停止关闭表单,但它在控制台中给了我一条错误消息,

Uncaught ReferenceError: jqXHR is not defined
at Object.error (script.js?v=1527662366599:148)
at fire (frontend.js?id=a613937eec44062691cf:7349)
at Object.fireWith [as rejectWith] (frontend.js?id=a613937eec44062691cf:7479)
at done (frontend.js?id=a613937eec44062691cf:13306)
at XMLHttpRequest.<anonymous> (frontend.js?id=a613937eec44062691cf:13538)

在这一点上真的卡住了。提前致谢。

标签: javascriptphpjqueryajax

解决方案


根据 jQuery 文档,请参阅http://api.jquery.com/jQuery.ajax/

错误:函数(jqXHR jqXHR,字符串 textStatus,字符串 errorThrown)

所以需要改成

error(jqXHR, textStatus, errorThrown)

https://jsfiddle.net/bhumi/rwe705ry/


推荐阅读