我通过类似
的代码将验证错误发送到ajax请求$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
$data = array('errors' => $validator->errors()->toArray());
return Response::json($data);
}
现在由ajax接收我希望它(验证错误)给文本区域和错误显示div留下深刻印象。为此,我正在这样做。
bla bla blaala
success:function(data, textStatus, xhr, error){
if(data == "OK")
{
$('div.result').html('You have successfully posted ! Please refresh to see your post <hr/>');
//window.location.reload(true);
}
else
{
// $('div.arr').data(data.errors);
//alert("---"+data);
$('div.result').html('Your post can not be possible ! Please check the text bOx ! <hr/> ');
$('div.arr.errors').val(data.errors);
$("#ask").attr("disabled", false)
}
我想对此
产生影响 <div class="arr control-group{{ $errors->first('about', ' has-error') }}">
但只有
<div class="result" style="color:red;">
</div>
在错误期间正在工作。
如何收集错误并在视图中显示?
提前谢谢\ m /
答案 0 :(得分:1)
只是将javascript数组/对象转储到div中将无法正常工作。你几乎有两个选择让它发挥作用。您可以使用PHP迭代数组并在那里创建HTML并将HTML作为字符串发送到Javascript,您只需将div的innerHTML设置为字符串即可。或者你可以保持它现在的方式,并使用Javascript和jQuery迭代对象并填写客户端的div。
在客户端进行
jQuery.each(data.errors, function(i, val)
{
error = document.createElement('SPAN');
error.innerHTML = val;
error.className = 'error'; // Can set the css class of the element
error.style.backgroundColor = '#F00'; // Can set other css stuff as well =)
$('div.arr.errors').append(error);
});
在服务器端执行此操作(仍需要一些客户端工作)
// PHP Stuff
$html = "<div class='errorClass'>";
foreach($validator->errors()->toArray() as $error)
{
$html .= "<span>" . $error . "</span>";
}
$html .= "</div>";
return Response::json(array('html' => $html));
// Javascript Stuff
$('div.arr.errors').html(data.html);
注意:我对jQuery并不是那么棒,但我不相信$('div.arr.errors')
可以使用你拥有的东西。我会减少对自己的混淆,只需给它一个errorArray或其他东西的ID,然后使用$('#errorArray')