如果成功,我想在隐藏后显示一个没有任何错误的窗口模态

时间:2015-04-21 08:54:45

标签: ajax laravel laravel-4

我的控制器

  public function postCreate()
    {
        //validamos reglas inputs
        $rules = array(
          'inputuser' => 'required|max:10',
          'inputpassword' => 'required|min:8',
          'inputpassword1' => 'required|min:8',
          'inputemail' => 'required|email|unique:users,email'
        );

        $validation = Validator::make(Input::all(), $rules);
        //Si no pasa la validacion
        if($validation->fails())
        {
            //Obtenemos los mensajes de error de la validation
            $messages = $validation->messages();
            //Redireccionamos a nuestro formulario de atras con los errores de la validación 
            if(Request::ajax())
            {
                return Response::json(array('errors' => $messages));
            }
            else
            {
                return Redirect::back()->withInput()->withErrors($validation);
            }
        }
        //Si todo ha ido bien guardamos
        $password = Input::get('inputpassword');
        $user = new User;
        $user->username = Input::get('inputuser');
        $user->password = Hash::make($password);
        $user->email = Input::get('inputemail'); 
        $user->admin = (Input::get('es_admin') == '1') ? 1 : 0;

        //guardamos
        $user->save();

        //redirigimos a usuarios

        return Redirect::to('admin/users.index')->with('status','ok_create');

    }

我在ajax中的main.js

$("document").ready(function()
{
   $("#formuser-create").submit(function()
   {
      event.preventDefault();
      var form = $(this);
      $.ajax({
         url: 'users/create',
         dataType:'json',
         data: form.serialize(),
         type: "POST", 
         success: function(response)
         {
             if(response.success)
             {
                 $("#box-modal").modal('hide');
             }
             else(response.error)
             {
                $.each(response.errors, function( index, value ) {
                $("input[name='"+index+"']" ).css('border: 2px solid #FF0000;');
                $("input[name='"+index+"']" ).parent().append(value[0]);
                });
             }
         },
         error: function(xhr, textStatus, thrownError)
         {
             console.log(xhr.status);
             console.log(thrownError);
             console.log(textStatus);
         }
      });
   }); 
});

我想重定向到admin / user并加载视图index.blade,如果它成功,则显示“ok_create”消息。但不要隐藏窗口模态。 我认为不要隐藏ajax中的模态窗口,因为我正确地在我的控制器中重定向。

我必须在ajax中制作所有代码吗? ,使用window.location.href并发送值ok_correct

我很困惑,有人可以用一个例子来帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您重定向到另一个页面,则只有选项是再次打开模式,因为它将是全新的页面加载。您可以将@if语句与一些布尔标志一起使用。

在这种情况下,您可以将用户重定向到另一个URL并包含控制器将在视图中再次设置的参数。在视图中,您可以在页面加载事件后以编程方式触发模式。

如果您希望模态保持打开并查看模态后面的更改,那么您需要创建动态ajax网站。它相对复杂,我不相信这是值得的。