Jquery Ajax错误响应无法在错误块

时间:2017-02-11 15:16:58

标签: jquery ajax

我正在尝试在jquery中创建一个通用函数来处理表单。当我从其余的API获得400响应时,我无法访问错误子句中的表单对象。

在下面的代码中,e.target是表单对象,但是在错误子句中无法访问e,即使使用全局变量,(这不是好办法)也不起作用

    $(document).ready(function(){
        $('form').validator().on('submit', function (e) {
            if (e.isDefaultPrevented()) {
                alert("Unexpected , contact admin");// handle the invalid form...
            } else {
                event.preventDefault();
                $.ajax({
                    url: e.target.action,
                    method: e.target.method,
                    data:$(this).serialize(),
                    success: function(data) {
                        alert(JSON.stringify(data));
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) { 
                        if (XMLHttpRequest.status == 0) {
                            alert(' Check Your Network.');
                        }else if (XMLHttpRequest.status == 404) {
                            alert('Requested URL not found.');
                        }else if (XMLHttpRequest.status == 500) {
                            alert('Internel Server Error.');
                        }else if (XMLHttpRequest.status == 400) {// Bad Request
                            $(e.target).append('<div class="alert alert-danger fade in alert-dismissable"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Danger!</strong> This alert box indicates a dangerous or potentially negative action.</div>')
                        }else {
                            alert('Unknow Error.\n' + XMLHttpRequest.responseText);
                        }     
                    }
                });                 

                return false;
            }
        });
    })

我在$(e.tartget)的错误块中得到的错误是e未定义。

1 个答案:

答案 0 :(得分:1)

我不会用e.target来做...检查我的代码片段, 怎么解决它。

通过$(this)

获取当前的对象

&#13;
&#13;
$(document).ready(function(){
        $('form').validator().on('submit', function (e) {
            
            //Get the target form 
            var form = $(this);
            
            if (e.isDefaultPrevented()) {
                alert("Unexpected , contact admin");// handle the invalid form...
            } else {
                event.preventDefault();
                $.ajax({
                    url: e.target.action,
                    method: e.target.method,
                    data:$(this).serialize(),
                    success: function(data) {
                        alert(JSON.stringify(data));
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) { 
                        if (XMLHttpRequest.status == 0) {
                            alert(' Check Your Network.');
                        }else if (XMLHttpRequest.status == 404) {
                            alert('Requested URL not found.');
                        }else if (XMLHttpRequest.status == 500) {
                            alert('Internel Server Error.');
                        }else if (XMLHttpRequest.status == 400) {// Bad Request                 
                            //Append the Error to the targeted form
                            form.append('<div class="alert alert-danger fade in alert-dismissable"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Danger!</strong> This alert box indicates a dangerous or potentially negative action.</div>')
                        }else {
                            alert('Unknow Error.\n' + XMLHttpRequest.responseText);
                        }     
                    }
                });                 

                return false;
            }
        });
    })
&#13;
&#13;
&#13;