如何使用ajax传递参数(laravel)获取数据

时间:2017-04-07 17:52:19

标签: php jquery mysql ajax laravel

我想通过执行具有where id = $id的SQL查询来填充表。

代码ajax:

$('#ingredientTable').DataTable({
    "ajax": {
        "url": "api/ingredients",
        "type": "post",
         "data" : {
             '_token': token,
              "id" :  '1' ,
          }
    },
    "columns":[
      {data:'name', name: 'ingredients.name'},
    ],
});

在路线中:

route::post('api/ingredients', function() {
    return Datatables::of(
        DB::select('SELECT * FROM ingredients 
              INNER JOIN ingredient_product ON ingredient_product.ingredient_id = ingredients.id 
              WHERE ingredients.id=' . $id . ' ;'))
        ->make(TRUE);
});

我收到此错误:

  

POST http://localhost:8080/pizzeria/public/api/ingredients 500(内部服务器错误)和DataTables警告:table id = ingredientTable - Ajax错误。有关此错误的详细信息,请参阅http://datatables.net/tn/7

1 个答案:

答案 0 :(得分:0)

r中的Route应该大写

Route::post

您的select()语句不正确,因为您需要使用DB::raw()来允许自己编写原始SQL。但是,正如@aynber所指出的那样,你也会暴露自己的SQL注入。相反,它应该这样做:

DB::table('ingredients')
    ->join('ingredient_product', 'ingredients.id', 'ingredient_product.ingredients_id')
    ->where('ingredients.id', request()->has('id') ? request()->get('id' : null)
    ->select('*') 
    ->get();

这将保护您免受SQL注入并正确使用Laravel的Query Builder