如何从控制器获取记录到Ajax laravel 5.2

如何从控制器获取记录到Ajax laravel 5.2

问题描述:

问候和尊重我希望在数据库表中记录要更新的记录时,但不幸的是,我不做任何无法获取ID并注入AJAX和AJAX的任何内容,我想要控制器和我从数据库和表中读取的数量之间的关系。如何从控制器获取记录到Ajax laravel 5.2

我的控制器:

public function index() 
{ 
    $category = Category::all(); 
    return view('admin.category', compact('category')); 
} 
public function indexAjax(messageRequest $request){ 
    $id=$request->id; 
    $category=Category::where('id',$id)->first(); 
    $data=array('data'=>$category); 
    return $data; 
} 
public function create(messageRequest $request) 
{ 
    try { 
     Category::create($request->all()); 
     return response()->json(array('sms'=>'save')); 
    }catch (Exception $e){ 
     return response()->json(array('err'=>'error')); 
    } 
} 

我的路线:

​​

脚本:

  <script> 
      $('#submit').on('click', function (e) { 
       e.preventDefault(); 
       var data = $('#create').serialize(); 
       $.ajax({ 
        type: 'post', 
        url: '{!! URL::route('category') !!}', 
        data: data, 
        success: function (data) { 
         alert(data.sms); 
        }, 
        error: function() { 
         alert(data.err); 
        } 
       }); 
       $.ajax({ 
        type: 'GET', 
        url: '{!! URL::route('categoryAjax') !!}', 
        async: false, 
        dataType: 'json', 
        data: data, 
        success: function (data) { 
         alert(data.data); 
        } 
       }); 
      }); 
      $.ajaxSetup({ 
       headers: { 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
       } 
      }); 
     </script> 

我改变alert(data.data)alert('hi)但不运行:( 改变:

    $.ajax({ 
        type: 'GET', 
        url: '{!! URL::route('categoryAjax') !!}', 
        async: false, 
        dataType: 'json', 
        data: data, 
        success: function (data) { 
         alert('hi'); 
        } 
       }); 

我的Ajax方法POST:

    $.ajax({ 
        type: 'post', 
        url: '{!! URL::route('category') !!}', 
        data: data, 
        success: function (data) { 
         alert(data.sms); 
        }, 
        error: function() { 
         alert(data.err); 
        } 
       }); 

我的控制器POST方法:

public function create(messageRequest $request) 
{ 
    try { 
     Category::create($request->all()); 
     return response()->json(array('sms'=>'save')); 
    }catch (Exception $e){ 
     return response()->json(array('err'=>'error')); 
    } 
} 

我的路线POST方法:

Route::group(['middleware' => 'web'], function() { 
Route::auth(); 
Route::post('category', ['as' => 'category', 'uses' => '[email protected]e']); 
}); 
+0

你定义了Route :: get('category',['uses'=>'categoryController @ index']) 为什么你让ajax类型为'post'?这完全没有意义。 –

+0

Post方法发送数据并接收连接到控制器被添加了时间。试试 –

这段代码我的问题是Solved.But从我的脚本并运行删除$.get用POST方法。

public function create(messageRequest $request) 
{ 
    try { 
     $category = Category::create($request->all())->id; 
     return response()->json(['id'=>$category]); 
    }catch (Exception $e){ 
     return response()->json(array('err'=>'error')); 
    } 
} 

通过此代码返回警报中的记录ID。

在Laravel 5.2,中间件具有网络,api和auth。 如果您想使用ajax发送的数据,您将使用带令牌的api中间件。 你可以看到这个参考:

首先,api_token添加到用户:

首先认为你需要做的是一个api_token列添加到你的用户表。如果您刚刚启动应用程序,则可能会因修改Laravel附带的用户迁移而将您的新列纳入其中。

// add this to your users_table migration 
$table->string('api_token', 60)->unique(); 

控制器:

public function upload() 
{ 
    return view('uploads.upload', ['api_token' => Auth::user()->api_token]); 
} 

查看:

<script> 
    $(function() { 
     'use strict'; 

     var url = '/api/photos?api_token={{ $api_token }}'; 

     // Initialize the jQuery File Upload widget: 
     $('#fileupload').fileupload({ 
      // Uncomment the following to send cross-domain cookies: 
      // xhrFields: {withCredentials: true}, 
      url: url 
     });  
</script> 

路线:

Route::group(['middleware' => ['auth:api']], function() { 
    Route::post('api/photos', '[email protected]'); 
}); 
+0

感谢您的好意不会麻烦其他代码? –

+0

我不确定。但是你可以修改路线并尝试。 O______O – WeiYuan

+0

msg有没有错误? – WeiYuan