我正在使用 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和
答案 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>');