TypeError:a未定义+未捕获TypeError:无法读取未定义的属性“length”

时间:2014-07-28 18:33:33

标签: javascript jquery

我正在使用 jQuery 1.11.1 ,我在Firebug的控制台中收到此错误:

TypeError: a is undefined

Uncaught TypeError: Cannot read property 'length' of undefined 
m.extend.each 
(anonymous function) 
j 
k.fireWith 
x 
b

在谷歌Chrome控制台中。

以下是控制台的屏幕截图: http://imgur.com/xCHrAm1

我的javascript代码是这样的:

<script>
        $(document).ready( function () {

            $('#submit').on('click', function(e) {

                e.preventDefault();


                var formData = new FormData();

                formData.append('username', $('#username').val());
                formData.append('email', $('#email').val());
                formData.append('password', $('#password').val());
                formData.append('password_confirmation', $('#password_confirmation').val());

                $.ajax({
                    url:         'registration',
                    method:      'post',
                    processData: false,
                    contentType: false,
                    cache:       false,
                    dataType:    'json',
                    data:        formData,
                    beforeSend: function()
                        {
                            $('#ajax-loading').show();
                            $(".validation-error-inline").hide();
                        }
                    })
                    .done(function(data) {

                        if (data.validation_failed == 1)
                        {
                            var arr = data.errors;

                            $.each(arr, function(index, value)
                            {
                                if (value.length != 0)
                                {
                                    $("#" + index).after('<span class="text-error validation-error-inline">' + value + '</span>');
                                }
                            });
                            $('#ajax-loading').hide();

                        }


                    })
                    .fail(function(jqXHR, ajaxOptions, thrownError) {
                        alert('No response from server');
                    });
                    return false;

            });
        });
    </script>

我发现当我评论这部分时:

$.each(arr, function(index, value)
    {
        if (value.length != 0)
        {
            $("#" + index).after('<span class="text-error validation-error-inline">' + value + '</span>');
        }
});
$('#ajax-loading').hide();

然后我没有错误。为什么$.each会导致问题?

知道如何解决这个问题吗?

顺便说一下。我正在使用Laravel和

1 个答案:

答案 0 :(得分:2)

变化:

var arr = data.errors;

要:

var arr = data.error;

$("#" + index).after('<span class="text-error validation-error-inline">' + value + '</span>');

致:

$("#" + index).after('<span class="text-error validation-error-inline">' + value[0] + '</span>');