dongliqin6939 2015-04-19 09:13
浏览 56
已采纳

如何从laquvel中的jquery ajax?调用控制器的方法。 获取请求404未找到网址

I have got my modal, here code

<!-- Modal -->
        <div class="modal fade" id="box-modal" tabindex="-1" role="dialog" aria-labelledby="myModal" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                        <h4 class="modal-title"><!-- Aqui va el titulo de la pagina modal -->@yield('modal_title')</h4>
                    </div>
                    <div class="modal-body">
                         @yield('modal_body')
                        <div class="alert hidden" id="modal-alert"></div>
                        <!--Aqui va el cuerpo de la página modal -->


                    </div>
                    <div class="modal-footer">
                    <!-- Aquí va el pie de la pagina modal -->
                    @yield('modal_footer')
                    </div>
                </div>
            </div>
        </div>
        <!-- Fin de Modal -->

I call to my modal with a link

<a id="link-modal" class='btn btn-primary pull-right' data-toggle='modal' data-target="#box-modal"><i class='fa fa-plus'></i> Alta usuario</a>

Inside of my modal in modal_body I show a form:

@section('modal_body')
    {{ Form::open(array('id' =>'formuser-create', 'role' => 'form', 'class' => 'form-horizontal')) }}
            <div class="form-group">
                {{ Form::label('inputuser', 'Nombre de usuario', array('class' => 'col-md-4 control-label')) }}
                <div class="col-md-5">
                    {{ Form::text('inputuser','', array('placeholder' => 'Introduce la contraseña...', 'class' => 'form-control input-md')) }}   
                </div>
            </div>
            <div class="form-group">
                {{ Form::label('inputpassword', 'Contraseña', array('class' => 'col-md-4 control-label')) }}
                <div class="col-md-5">
                    {{ Form::password('inputpassword','', array('placeholder' => 'Introduce la contraseña...', 'class' => 'form-control input-md')) }}
                </div>
            </div>
            <div class="form-group">
                {{ Form::label('inputpassword1', 'Confirmar constraseña', array('class' => 'col-md-4 control-label')) }}
                <div class="col-md-5">
                    {{ Form::password('inputpassword1','', array('placeholder' => 'Vuelve a introducir la contraseña...', 'class' => 'form-control input-md')) }}
                </div>
            </div>
            <div class="form-group">
                {{ Form::label('inputemail', 'Email', array('class' => 'col-md-4 control-label')) }}
                <div class="col-md-5">
                    {{ Form::text('inputemail','', array('placeholder' => 'Introduce el email...', 'class' => 'form-control input-md')) }} 
                </div>
            </div>
            <div class="form-group">
                {{ Form::label('es_admin', '¿Es administrador?', array('class' => 'col-md-4 control-label')) }}
                <div class="col-md-5">
                    {{ Form::checkbox('es_admin',1,false) }}
                </div>
            </div>
    {{ Form::close() }}  
@stop
@section('modal_footer')
<div class='form-group text-center' id='editor-actions'>
    {{ Form::submit('Guardar', ['class' => 'btn btn-success']) }} 
    {{ Form::reset('Limpiar', ['class' => 'btn btn-primary']) }}
</div>
@stop

When I press the button submit, I want to call to the method 'Create' of the Controller, for add an user. I make it with jquery ajax

   $("formuser-create#submit").on("submit",function(e)
   {
        e.preventDefault();
        var request = $.ajax({
            type:'POST',
            url:'users/Create',
            data:$("#formuser-create").serialize()   
        });
        request.fail(function(jqXHR, exception)
        {
            if(jqXHR.status === 500)
            {
                alert('Error interno:' + jqXHR.resposeText);
            }
            else if(jqXHR.status === 404)
            {
                alert('Pagina no encontrada[404]');
            }
            else if(exception === 'timeout')
            {
                alert('Error time out');
            }
            else if(exception === 'abort')
            {
                alert('Respuesta ajax abortada');
            }
            else
            {
                alert('Error no detectado '+jqXHR.responseText);
            }
        });
    });

But It don´t go to the controller, don´t work, I received an Error 404 not found url

My call to the Controller

Route::Controller('users','UsersController');

the controller UserSController code

class UsersController extends BaseController
{

//metodo para agregar al usuario
    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'
        );

        $validation = Validator::make(Input::all, $rules);
        //Si no pasa la validacion
        if($validation->fails())
        {
            return Redirect::back()->with_input()->with_errors($validation);
        }
        //Si todo ha ido bien guardamos
        $password = Input::post('inputpassword');
        $user = new User;
        $user->username = Input::post('inputuser');
        $user->password = Hash::make($password);
        $user->email = Input::post('inputemail');
        $user->admin = Input::post('es_admin');

        //guardamos
        $user->save();

        //redirigimos a usuarios

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

    }
}

What am I doing wrong?

  • 写回答

1条回答 默认 最新

  • dqyknf4423 2015-04-19 09:30
    关注

    Your route is called Route::Controller('users','UsersController'); but you're calling url:'users/Create', which propably doesn't exist.

    One way could be to change your route to:

    Route::post('users', 'UsersController@postCreate');

    This way it is a POST route and your telling the route which method in UsersController to use.

    Then set your Ajax call url property to: url: 'users'


    Also, your Ajax call property data should look something like:

    data: {
        myInput: $("#formuser-create").serialize()
    }
    

    This way, you got the submitted data as Input::get('myInput')in your controller.


    This has nothing to do directly with your question, but the {{Form::submit()}} and {{Form::reset()}} should be before the {{Form::close()}}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致
  • ¥15 禅道二次开发编辑版本,上传不了发行包