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

Laravel报Undefined offset: -1且JQuery获取input值异常如何解决?

1. Undefined offset: -1 错误触发原因

该错误由数组下标越界导致:
代码中计算选中运费下标的逻辑为 $selected_rate_index = count($rates) - 1;,如果业务逻辑返回的$rates是空数组,count($rates)的计算结果为0,最终得到的下标就是-1,PHP不允许访问数组的负数下标,因此抛出该错误。

修复方案:访问数组前先判断数组是否非空

if (!empty($rates)) {
    $selected_rate_index = count($rates) - 1;
    $selected_rate = $rates[$selected_rate_index];
    $selected_rate_object_id = $selected_rate['object_id'];
}

2. 无法获取运费数值的原因

你当前单选框的value属性绑定的是{{ $rate->object_id }},alert弹出的32位字符串就是这个对象ID,不是运费金额。可以根据业务需求二选一修改:

方案1:直接把value绑定为金额

如果提交表单只需要传金额,直接修改input的value属性即可:

<input type="radio" class="pull-right rate-value" name="rate" value="{{ $rate->amount }}">

原有jQuery代码可以直接拿到金额值,只需补充阻止默认提交逻辑,避免页面刷新导致alert一闪而过:

$("button").click(function(e){
    e.preventDefault();
    var val = $("input[name='rate']:checked").val();
    alert('$' + val);
});

方案2:新增自定义属性存储金额

如果提交表单仍需要用到object_id,可以新增data-自定义属性存储金额:

<input type="radio" class="pull-right rate-value" name="rate" value="{{ $rate->object_id }}" data-amount="{{ $rate->amount }}">

修改jQuery代码从自定义属性取值:

$("button").click(function(e){
    e.preventDefault();
    var selected = $("input[name='rate']:checked");
    if(selected.length) {
        // 拿ID用selected.val(),拿金额用下面的方法
        var amount = selected.data('amount');
        alert('$' + amount);
    }
});

内容的提问来源于stack exchange,提问作者D.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:04