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>');
    });
});

这段代码将数据发送到 URL / 并且运行良好。但我想将它发送到Route.Name,该路由将它发送到控制器@动作。
无论如何或解决方法可以做到这一点?

4

2 回答 2

8

在你的路线中,

Route::get('data', array('uses' => 'HomeController@store'));

在 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
  }
}

最后是剧本,

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>');
    });
});
于 2013-10-22T15:04:09.823 回答
3

你可以改变

var BASE = 'http://localhost/project/public/';

var BASE = '<php echo URL::route("name");?>'

你的路线应该是:

Route::post('action', array('as' => 'name', 'uses' => 'HomeController@action'));

请注意使用命名路由而不是使用构建 urlURL::to('controller/action')

于 2013-10-22T15:04:46.257 回答