我正在尝试为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');
}));
});
答案 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')));
}