Ajax 发布到 Laravel 4 中的路由
Posted
技术标签:
【中文标题】Ajax 发布到 Laravel 4 中的路由【英文标题】:Ajax post to route in Laravel 4 【发布时间】:2013-10-31 12:49:12 【问题描述】:我将使用 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,该路由将其发送到 controller@action。 有什么办法或解决方法吗?
【问题讨论】:
【参考方案1】:在你的路线中,
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>');
);
);
【讨论】:
所以我需要使用 Request::ajax() 来检查它是否是一个ajax请求。在常规使用中,为了发回我使用$errors->has
的错误,我如何在ajax 提交后访问$errors?!【参考方案2】:
你可以改变
var BASE = 'http://localhost/project/public/';
到
var BASE = '<php echo URL::route("name");?>'
你的路线应该是:
Route::post('action', array('as' => 'name', 'uses' => 'HomeController@action'));
注意使用named routes,而不是使用URL::to('controller/action')
构建url
【讨论】:
这是 Laravel 4 的语法吗? 所以我需要使用 Request::ajax() 来检查它是否是一个ajax请求。在常规使用中,为了发回我使用 $errors->has 的错误,我如何在 ajax 提交后访问 $errors?! 如果您有错误或没有错误,您可以发送不同的回复以上是关于Ajax 发布到 Laravel 4 中的路由的主要内容,如果未能解决你的问题,请参考以下文章
如何从刀片模板中的 Javascript 文件重定向 Laravel 路由
JavaScript 表单使用 Ajax 和 Laravel 路由提交到数据库
使用ajax从控制器调用函数的新路由或其他方式? Laravel 5.2,阿贾克斯
laravel 4持续数据正在进行 - jquery ajax提交