我有以下代码
在控制器中
class AccountController extends Controller
{
public function login(Request $request) {
$data=$request->all();
//print_r($request->all())
//return view('main',['data'=>$data]);
}
}
路线
Route::get('account/login', function() {
return View::make('manager.test');
});
Route::post('account/login', 'AccountController@login');
登录视图
@extends('layout.manager')
@section('content')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Example of Bootstrap 3 Vertical Form Layout</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function(){
$('.send-btn').click(function(){
$.ajax({
url: 'login',
type: "post",
data: {'email':$('input[name=email]').val(), '_token': $('input[name=_token]').val()},
success: function(data){
console.log(data);
}
});
});
});
</script>
</head>
<body>
<div class="bs-example">
<div class="secure">Secure Login form</div>
{!! Form::open(array('url'=>'account/login','method'=>'POST', 'id'=>'myform')) !!}
<div class="control-group">
<div class="controls">
{!! Form::text('email','',array('id'=>'','class'=>'form-control span6','placeholder' => 'Email')) !!}
</div>
</div>
<div class="control-group">
<div class="controls">
{!! Form::password('password',array('class'=>'form-control span6', 'placeholder' => 'Please Enter your Password')) !!}
</div>
</div>
{!! Form::button('Login', array('class'=>'send-btn')) !!}
{!! Form::close() !!}
</body>
</html>
@stop
当我点击提交时,来自ajax的所有数据都将在我的浏览器控制台中打印。我试图将ajax值传递给我的控制器中的视图,但每次返回500内部错误。任何人都可以告诉如何将ajax值传递给另一个查看和我在哪里做错了? 谢谢
更新
以下无效
public function login(Request $request) {
$data=$request->all();
$send= User::where('email','=', $data->email)
return view('main',['data'=>$send]);
}
public function login(Request $request) {
return Redirect::to('home');
}
每个人都认为工作正常。当我返回view时出现问题。在我的浏览器控制台中抛出错误为500内部错误,否则如果我在控制器内打印_r那么它将在我的浏览器控制台中显示数据。
更新2
在我的控制器中
public function login(Request $request) {
$data=$request->all();
return $data;
}
Object { email: "manager@gmail.com", _token: "gqqXvVfwbKRHQWczYNfFMmB9ZB943CLfLdG…" }
答案 0 :(得分:2)
在成功回调jquery时,您可以访问数据对象的每个元素,如演示所示
success: function(data){
alert(data.email);
alert(data._token);
}
答案 1 :(得分:1)
我不知道你在用ajax做什么。但我这样做
$("#myform").submit(function(e) {
e.preventDefault();
var form_url = $( this ).attr('action');
var form_data= $( this ).serialize();
$.ajax({
url: form_url,
type: 'POST',
data: form_data,
dataType: 'json',
success: function( result ){
$('#result-area').html( result );
}
});
});
我从表格中得到了适当的回应。
是的,根据您的更新,如果您希望这些值应该在Javascript中可用,您应该使用Jeffery Way的laracasts/utilities
包。这样做真是太棒了。你可以这样做:
public function login(Request $request) {
$data=$request->all();
$send= User::where('email','=', $data->email);
Javascript::put([ 'send' => $send ]);
return view('main');
}
然后在您的刀片中,您可以通过简单地说
来访问console.log('send');
它会发挥魔力。
答案 2 :(得分:1)
我认为这是路线的问题。
路线:
Route::get('account/login', function() {
return View::make('manager.test');
});
Route::post('account/login', 'AccountController@login');
将其更改为:
Route::get('account/login, ['as' => 'getLogin, 'uses' => 'AccountController@getLogin']);
Route::post('account/postLogin, ['as' => 'postLogin', 'uses' => 'AccountController@postLogin']);
控制器:
此:
public function login(Request $request) {
$data=$request->all();
$send= User::where('email','=', $data->email)
return view('main',['data'=>$send]);
}
public function login(Request $request) {
return Redirect::to('home');
}
要:
public function postLogin(Request $request) {
$data=$request->all();
$send= User::where('email','=', $data->email)
return $send;
}
public function getLogin(Request $request) {
return Redirect::to('home');
}