laravel请求Ajax无法正常工作

时间:2014-02-05 08:25:53

标签: php jquery ajax laravel laravel-4

在我的表单中,我想使用带有$.post的ajax并获取并发布请求,在使用$.post并提交表单后,我的页面刷新并且警报不起作用控制器的验证。

只是在控制器中请求ajax无法正常工作

我的表格:

<script type="text/javascript">
$(document).ready(function(){
    $('form').submit(function(){
        name         = $('#name').val();
        family       = $('#family').val();
        email        = $('#email').val();
        currPassword = $('#currPassword').val();
        password     = $('#password').val();
        password_confirmation = $('#password_confirmation').val();

        $.post('{{ URL::route('admin.profile.update') }}' ,
            { 
              name                  : name,
              family                : family,
              email                 : email,
              currPassword          : currPassword,
              password              : password,
              password_confirmation : password_confirmation 
             },
             function(data){
                if(data.errors)
                    alert(data.errors)
            }
        );
        //return false; 
    });

})
</script>

 {{ Form::model($profile, array('route' => array('admin.profile.update', $profile->id), 'method' => 'PUT')) }}

                <div style='padding:10px;font-weight: bold;'>ویرایش مشخصات شخصی</div>
                <table style='width:95%;border:none;font-size:11px;margin: 5px;text-align: left'>
                    <tr>
                        <td width="80px">{{ Form::label('name' , 'نام: ') }}</td>
                        <td>{{ Form::text('name',null , array('id'=>'name', 'class' => 'form-control' )) }}</td>
                    </tr>
                    <tr>
                        <td>{{ Form::label('family' , 'نام خانوادگی: ') }} </td>
                        <td>{{ Form::text('family', null, array('id'=>'family', 'class' => 'form-control')) }}</td>
                    </tr>
                    <tr>
                        <td>{{ Form::label('email' , 'ایمیل: ') }}</td>
                        <td>{{ Form::text('email', null, array('id'=>'email', 'class' => 'form-control ltr')) }}</td>
                    </tr>
                    <tr>
                        <td>{{ Form::label('currPassword' , 'رمز عبور فعلی: ') }}</td>
                        <td>{{ Form::password('currPassword', array('id'=>'currPassword', 'class' =>'form-control ltr')) }}</td>
                    </tr>
                    <tr>
                        <td>{{ Form::label('password' , 'رمز عبور: ') }}</td>
                        <td>{{ Form::password('password', array('id'=>'password', 'class' =>'form-control ltr')) }}</td>
                    </tr>
                    <tr>
                        <td>{{ Form::label('password_confirmation' , 'رمز عبور مجدد: ') }}</td>
                        <td>{{ Form::password('password_confirmation', array('id'=>'password_confirmation', 'class' =>'form-control ltr')) }}</td>
                    </tr>
                    <tr>
                        <td colspan="2">{{ Form::submit('ویرایش مشخصات', array('id'=>'submit','class'=>'btn btn-default' , 'style'=>'float:left')) }}</td>
                        <td></td>
                    </tr>
                </table>
                {{ Form::close() }}

我的控制器:

public function update($id)
    {
        if ( Request::ajax() ){

            $rules = array(
                'name'        => 'required|alpha',
                'family'      => 'required',
                'email'       => 'required|email',
                'currPassword'=> 'required',
                'password'    => 'required|confirmed|min:4',
                'password_confirmation'=>'required',
            );

            $validator = Validator::make(Input::all(), $rules);

            if ($validator->fails()) {
                /*
                return Redirect::to('/admin/profile')
                    ->withErrors($validator)
                    ->withInput();
             */
             return Response::json(array(
                    'errors'=>$validator
                ));
            }
}
}

我的路线:

Route::group(array('before' => 'auth'), function()
{
  Route::resource  ('admin/profile' , 'ProfileController', array('as'=>'profile' , 'before'=>'csrf'));

});

1 个答案:

答案 0 :(得分:0)

我认为问题在于表单正在提交,因为您没有使用preventDefault(),但我发现您在前一个问题中努力使其正常工作。这就是为什么您的页面令人耳目一新。

您可以做的不是使用Form::submit(),而是使用Form::button()来保持表单不会提交,允许您使用javascript随意执行。然后,不是使用因为它没有提交而不再有效的$('form').submit(),而是将处理程序附加到按钮的click事件。 $('#submit').on('click', function() { // Code goes here});

不幸的是,如果用户没有在浏览器中启用javascript,则表单的负面副作用根本无法正常运行。

此外,根据您使用的浏览器,您应该在使用开发人员工具时查看XHR请求,以查看是否有任何错误或状态返回。