如何从ajax中检索数据?

时间:2015-09-05 04:58:55

标签: php ajax

我有以下代码

在控制器中

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…" }

3 个答案:

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