Laravel使用$ .post发布数据

时间:2014-02-05 16:24:48

标签: php jquery ajax laravel laravel-4

我正在尝试为laravel设置ajax,但它不起作用。我有控制器用于检查验证和从数据库更新。阻止提交表单的javascript不起作用,页面刷新。

不工作意味着:alert('SUBMIT');提交表单无法正常工作并提醒我,没有任何错误和警告。

我测试alert('SUBMIT');但这不起作用。但alert('ACTION');纠正并提醒我。

我包含了正确的JS:

<head>
    <title>Alachiq</title>
    <meta charset='UTF-8' />

    {{HTML::script('js/jquery-1.9.1.min.js')}}

</head>

jQuery的:

<script type="text/javascript">
    $(document).ready(function() {

       alert('ACTION');//

       $('#submit').click(function(){

       alert('SUBMIT');

       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()
            {
                alert('sss');
            },'json');
       });
});
</script>

我的表格样本:

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

...

{{ Form::close() }}

我的简单控制器

public function update($id)
{
  if ( Request::ajax() ){
             return Response::json(array(
                    'errors'=>'ddddd'
                ));
  }
}

更新: 我的路线:

Route::group(array('before' => 'auth'), function()
{

  Route::get  ('admin/contents', array('as'=>'contents', function(){
      return View::make('back_end.layouts.contents');
  }));
  Route::resource  ('admin/profile' , 'ProfileController'          , array('as'=>'profile', 'before'=>'csrf'));

  Route::get('admin/createNewContents' ,array('as'=>'createNew', function(){
      return View::make('back_end.layouts.createNewContents');
  }));
});

1 个答案:

答案 0 :(得分:1)

试试这个

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

{{ Form::close() }}

'id' => 'frm'之后的model表单中注明'method' => 'PUT'。现在使用以下代码提交表单

$('#frm').submit(function(e){
    e.preventDefault();
    // rest of your code
});

更新:将路线声明更改为此(同时在发布数据中添加_method:"PUT"):

Route :: group(array('prefix'=&gt;'admin','before'=&gt;'csrf'),function(){

Route::resource('/profile' , 'ProfileController');

<击>});

现在从command prompt/terminal运行php artisan routes命令并检查每个路由(网址和名称),找出使用此操作Laravel的正确路线。

更新:ProfileController控制器

中添加此内容
public function __construct()
{
    $this->beforeFilter('csrf', array('on' => array('post', 'delete', 'put', 'patch')));
}