【问题标题】:Get date from datepicker using Ajax with Laravel controller使用 Ajax 和 Laravel 控制器从 datepicker 获取日期
【发布时间】:2020-02-05 21:07:19
【问题描述】:

我想在用户选择日期并使用 ajax 将其发送到 laravel 控制器时获取 datepicker 值。此代码不适用于我..

  $.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
  });

  $('#date').datepicker({
  format: 'dd-mm-yyyy',
  onSelect: function(date, instance) {
        $.ajax({
              type: "POST",
              url: '/process_date',
              data: date,
              success: function(result)
              {
                  console.log(result);
              }
        });  
    }
});

这是我的路线,

Route::post('/process_date', 'TimeController@ajaxTime');

这是我的控制器,

class TimeController extends Controller
{
  public function ajaxTime(Request $request)
    {
      $data = $request->all(); // This will get all the request data.

      dd($data); // This will dump and die
    }
 }

【问题讨论】:

  • $.datepicker(...) 使用哪个日期选择器插件?
  • 究竟是什么不工作? onSelect 函数没有执行吗?控制器动作是否被调用?日期是否为空?
  • 您可以在控制器中格式化date。这将是更容易和更好的方法。
  • @t1gor 我正在使用“bootstrap-datepicker.min.js”
  • 我在文档中没有看到 onSelect。我猜你需要的是changeDate 事件选项。 bootstrap-datepicker.readthedocs.io/en/latest/…

标签: php ajax laravel datepicker


【解决方案1】:

尝试将您的代码更改为此,因为我一直在阅读 documentation 并使用我自己的一些代码对其进行测试,这就是我想出的

    $('#date').datepicker({
        format: 'dd-mm-yyyy',
    }).on('changeDate', function(e) {            
        $.ajax({
              type: "POST",
              url: '/process_date',
              data: {
                 date: e.date.toString(),
              },
              success: function(result) {
                  console.log(result);
              },
              error: function (error) {
                  console.log(error);
              }
        });
    })

并将您的 TimeController 课程从

class TimeController extends Controller
{
    public function ajaxTime(Request $request)
    {
        $data = $request->all(); // This will get all the request data.

        dd($data); // This will dump and die
    }
}

class TimeController extends Controller
{
    public function ajaxTime(Request $request)
    {
        return $request->all(); // This will get all the request data.
    }
}

在您的浏览器控制台中获得更好的结果。

【讨论】:

  • 现在,当我单击控制台中显示的大量数据的日期时。如何提取所选日期?
  • @Hashan 您在控制台中看到大量数据的原因是因为您在控制器中执行此dd($data)。我已经编辑了我的答案,以向您展示更好的方法。
  • 非常感谢。这个对我有用。数据现在显示在浏览器网络选项卡中。
猜你喜欢
  • 2021-06-13
  • 2012-07-16
  • 2019-02-08
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多