You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中无法获取datepicker值以从URL获取JSON的问题求助

Laravel中Datepicker值无法传递导致API请求无输出的排查与解决

作为Laravel新手遇到这种问题很正常,咱们一步步拆解排查,找出问题所在:

一、前端JS代码的明显错误

首先看你的JS文件里这行代码:

var input = $(this).attr("datepicker");

这里的datepicker是元素的id,并不是一个HTML属性,你应该获取元素的name属性(你的input的name就是datepicker),改成:

var input = $(this).attr("name");

另外,gijgo的datepicker组件有时候需要显式绑定事件,建议把datepicker的初始化和事件绑定改成这样:

$('#datepicker').datepicker({ format : 'yyyy-mm-dd' })
.on('change', function(e) {
    $('#jampraktek').val('');
    // 手动触发dynamics类的change事件,确保AJAX请求能发送
    $(this).trigger('change');
});

二、后端代码的潜在问题

1. 检查Guzzle依赖的引入

你的控制器里用了Client来请求外部API,必须先引入Guzzle的类:

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException; // 用于捕获请求异常

如果没引入这两个类,new Client()会直接报错,导致没有任何输出。

2. 给API请求加上异常捕获

外部API请求可能因为网络、参数等原因失败,加上异常捕获能帮你定位问题:

function jampraktekterpilih(Request $request){
    $client = new Client();
    $value = $request->get('value');
    $dependent = $request->get('dependent');
    
    // 先记录收到的日期值,排查前端是否传对
    error_log('收到的日期值: ' . $value);
    
    try {
        $response = $client->get('http://192.168.11.213:8080/jadwaldokter-v04-0.0.1/Jadwal/JadwalDokterDenganTanggalDokter/'.$value.'/dan/17');
        $res = json_decode($response->getBody()->getContents());
        
        // 记录API返回的数据,确认是否拿到有效结果
        error_log('API返回数据: ' . print_r($res, true));
        
        $output = '<option value="">pilih '.ucfirst($dependent).'</option>';
        foreach($res as $key=>$node) {
            $output .= '<option value="'.$this->hari($node->hariPraktek).'">'.$this->hari($node->hariPraktek).'</option>';
        }
        echo $output;
    } catch (RequestException $e) {
        // 捕获请求异常并记录
        error_log('API请求错误: ' . $e->getMessage());
        // 返回错误提示给前端
        echo '<option value="">加载数据失败</option>';
    }
}

三、浏览器端调试技巧

打开浏览器开发者工具(F12),通过以下方式排查:

  • Console标签:查看是否有JS报错(比如jQuery未引入、gijgo加载失败等)
  • Network标签:查看XHR类型的请求,检查:
    • 请求的参数是否包含正确的value(日期值)
    • 请求的状态码是否为200
    • 后端返回的响应内容是什么

另外,给AJAX请求加上错误回调,方便查看问题:

$.ajax({
    url:'/daftarPeriksa/jampraktekterpilih',
    method: "POST",
    data:{input:input, value:value, _token:_token, dependent:dependent},
    success:function(result) {
        console.log('AJAX请求成功:', result);
        $('#'+dependent).html(result);
    },
    error:function(xhr, status, error) {
        console.log('AJAX请求错误:', xhr.responseText, status, error);
    }
})

四、额外验证步骤

你可以用Postman或者curl工具直接向后端路由发送POST请求,带上value=2019-01-08和有效的CSRF token,看看后端返回什么内容。如果能返回正确的option列表,说明后端逻辑没问题,问题出在前端;如果还是没有输出,就重点排查后端的Guzzle引入和API请求逻辑。

按照这些步骤一步步排查,应该能快速找到问题并解决。

内容的提问来源于stack exchange,提问作者Yeru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:10:15