Ajax发布在Laravel 4中

Par*_*ars 4 php ajax laravel laravel-4

我将使用ajax 将一些数据发送到当前页面以在数据库中插入内容.
假设这个ajax代码:

$('#newPost :submit').click(function(e){
            var BASE = 'http://localhost/project/public/';
    e.preventDefault();
    $.post(BASE, {
        'message' : $('#newPost textarea.message').val()
        }, function(data) {
        $('#content').prepend('<p>' + data + '</p>');
    });
});
Run Code Online (Sandbox Code Playgroud)

这段代码将数据发送到URL /并且运行良好.但我想将它发送到Route.Name,该路由将其发送到控制器@动作.
无论如何还是有办法解决这个问题吗?

dev*_*evo 8

在你的路线,

Route::get('data', array('uses' => 'HomeController@store'));
Run Code Online (Sandbox Code Playgroud)

在HomeController中,

public function store() {
  $input = Input::all(); // form data
  // validation rules
  $rules = array(
    'email'   => 'required|email', 
    'name'    => 'required', 
  ); 

  $validator = Validator::make($input, $rules); // validate
  // error handling
  if($validator->fails()) {
    if(Request::ajax()) {   // it's an ajax request                 
      $response = array(
         'response'  =>  'error',
         'errors'    =>  $validator->errors()->toArray()
      );                
    } else { // it's an http request
       return Redirect::intended('data')
                  ->withInput()
                  ->withErrors($validator);
    }
  } else { // validated
     // save data
  }
}
Run Code Online (Sandbox Code Playgroud)

最后剧本,

var root_url = "<?php echo Request::root(); ?>/"; // put this in php file
$('#newPost :submit').click(function(e){
    var BASE = root_url + 'data';
    e.preventDefault();
    $.post(BASE, {
        'message' : $('#newPost textarea.message').val()
        }, function(data) {
        $('#content').prepend('<p>' + data + '</p>');
    });
});
Run Code Online (Sandbox Code Playgroud)