2014-02-05 6 views
0

в простой форме. Я хочу использовать ajax с $.post и получить и отправить запрос с этим, после использования $.post и отправить форму. Моя страница обновляется и предупреждает, что не работает проверка контроллера.laravel Запрошен Ajax не работает

просто запросить 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')); 

}); 
+0

Доу вы достигли действия? У вас есть фильтр на маршруте .. попробуйте отключить его –

+0

@VitKos ведьма фильтр ??? –

+0

Нет, фильтр auth и csrf. –

ответ

0

Я считаю, пробл em представляет форму, потому что вы не используете preventDefault(), но я вижу, что вы боретесь с тем, чтобы правильно работать в предыдущем вопросе. Вот почему ваша страница освежает.

Что вы можете сделать, а не использовать Form::submit(), вы можете использовать Form::button(), который сохранит форму отправки, позволяя вам делать как угодно с помощью javascript. Затем вместо использования $('form').submit(), который больше не должен работать, потому что он не отправляется, присоедините обработчик к событию нажатия кнопки. $('#submit').on('click', function() { // Code goes here});

К сожалению, к сожалению, негативный побочный эффект вашей формы не может вообще функционировать, если у пользователя нет javascript, включенного в браузере.

Кроме того, в зависимости от того, какой браузер вы используете, вы должны смотреть на запросы XHR, когда они происходят с помощью инструментов разработчика, чтобы проверить, нет ли каких-либо ошибок или статусов.

Смежные вопросы