在Laravel 5.2中从Ajax中检索值

时间:2016-07-05 01:53:45

标签: ajax laravel-5.2

我想从ajax中检索值,在保存到数据库中时将其用作值

$("ul.dropdown-menu li").click(function() {
    par = $(this).find("span.widgets").html(); 
  $.ajax({
    url: '/partA-save',
    type: "POST",
    data: {
    'test': latest,
    'widget': par,
    _token: CSRF_TOKEN
    },error:function(log) {
    console.log(log);
  }
  });
  console.log(par);
  return true;
});

在控制台中,当用户单击ul里面的li时,par变量会正确记录该值。现在我想在控制器中使用它来获取if else语句

 public function save(Request $request)
{
    $newdata = $request->input('test');

    $newWidget = $request->input('widget');
    if ($newWidget == 'COST') {
        $us = new Cost();
        $us->api = $newWidget;
        $us->save();
    } else {

        $us = new Map();
        $us->api = $newWidget;
        $us->save();
    }
}

路线

Route::post('/partA-save','PartAController@save');

即使用户选择COST,控制器也始终使用else块中的代码。知道我在这里缺少什么吗?另外,如何在控制器中调试它,以便我可以在变量$ newWidget中查看其中的内容。如果我改变这个

 date: { 'widget': 'COST'

保存到COST。

使用var_dump或dd返回null。如何在Ajax中正确设置值?

1 个答案:

答案 0 :(得分:0)

尝试以下代码

更改从Ajax调用的URL

$("ul.dropdown-menu li").click(function() {
    par = $(this).find("span.widgets").html(); 
  $.ajax({
    url: '{{url("/partA-save")}}',
    type: "POST",
    data: {
    'test': latest,
    'widget': par,
    _token: CSRF_TOKEN
    },error:function(log) {
    console.log(log);
  }
  });
  console.log(par);
  return true;
});

在Controller中使用get方法替换输入。

public function save(Request $request)
{
    $newdata = $request->get('test');

    $newWidget = $request->get('widget');
    if ($newWidget == 'COST') {
        $us = new Cost();
        $us->api = $newWidget;
        $us->save();
    } else {

        $us = new Map();
        $us->api = $newWidget;
        $us->save();
    }
}