首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel向ajax post添加错误消息

Laravel向ajax post添加错误消息
EN

Stack Overflow用户
提问于 2015-07-26 09:11:01
回答 1查看 2.3K关注 0票数 1

我正试图在laravel 5中通过ajax提交一个表单,它在一定程度上有效。

这是我的ajax/jQuery:

代码语言:javascript
运行
复制
$('#RegisterSubmit').click(function(e){
        e.preventDefault();
        var form = $('#RegisterForm');
            $.ajax({
                type: 'POST',
                url: '/register_process',
                data: form.serialize(),
                dataType: 'json',
                timeout: 9000,

            });
            $('#RegisterForm')[0].reset();

    });

一切正常,用户可以注册并将信息发送到数据库,但是当用户出错时,我希望有一条消息说:“用户名字段是空的”。

我通过这样的html实现了这一点:

代码语言:javascript
运行
复制
<div class="form-group">
        <label class = "col" for = "username" >username:</label>
     <div class = "col">
        <input id = "username" class=" input {{ $errors->has('username') ? 'has-error' : '' }}" type = "username" name = "username" value="{{ Input::old('username') }}"></input><br>
        {!! $errors->first('username' , '<span style = "color:red">:message</span>') !!}
     </div>
    </div>

但是现在我不能再用它了,因为我用ajax发送数据,我能做些什么来解决这个问题呢?

以下是我展示信息的方式:

代码语言:javascript
运行
复制
public function StoreRegister()
{
    $messages = [
        'unique' => 'Acest :attribute deja exista',
        'min' => 'Câmpul :attribute trebuie sa conţina cel puţin :min caractere',
        'required' => 'Campul :attribute trebuie completat',
        'email' => 'Campul :attribute trebuie sa fie valid'
    ];

    $validator = Validator::make(Input::all(),Register::$rules,$messages);
    if($validator->fails())
    {
        return Redirect::back()->withInput()->withErrors($validator);
    }

    Register::saveFormData(Input::except(array('_token')));
    return Redirect::to('/');
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-26 09:53:56

代码语言:javascript
运行
复制
$.ajax({
                    type: 'POST',
                    url: '/register_process',
                    data: form.serialize(),
                    dataType: 'json',
                    timeout: 9000,
                    error: function(data){
                        if( data.status === 422 ) {
                          var errors = data.responseJSON;
                          errorHtml='<div class="errors"><ul>';
                          $.each( errors, function( key, value ) {
                               errorHtml += '<li>' + value[0] + '</li>';
                         });
                          errorHtml += '</ul></div>';
                          $( '#formerrors' ).html( errorHtml );

                    }
                 }
         });

在ajax期间使用validate时,laravel生成包含每个错误消息的json,并且响应的状态是422.Do --不要忘记添加一个div来显示错误。

代码语言:javascript
运行
复制
<div id="formerrors"></div>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31635347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档