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

提交评分后Alert在Chrome正常显示,Firefox无响应求助

解决Firefox中Ajax成功回调alert不显示的问题

嘿,我一眼就揪出问题根源了——异步操作的时序冲突!你点击提交按钮后,刚调用setRating()发起Ajax请求,紧接着就执行location.reload()刷新页面。但Ajax是异步执行的,浏览器不会傻等请求完成才刷新,Firefox的异步调度逻辑让回调代码还没来得及执行,页面就已经刷新消失了,所以alert根本没机会弹出来;Chrome可能因为某些偶然的时序巧合让alert偶尔显示,但这本质上是个隐性bug。

下面是具体的修复步骤:

1. 调整页面刷新的时机

把location.reload()从点击事件里移到Ajax的success回调中,确保只有当评分提交成功后才刷新页面:

修改点击事件代码

原来的代码:

$('#btn_submit').click(function() { 
    setRating($('.checked').length, transaksi_id, menu_id); 
    location.reload(); 
});

改成:

$('#btn_submit').click(function() { 
    setRating($('.checked').length, transaksi_id, menu_id); 
});

更新setRating函数

把刷新逻辑放到成功回调里,同时补充CSRF令牌(Laravel POST请求必须带这个,Firefox对这部分校验更严格):

function setRating(rating, pesanan_id, id_menu) { 
    $.ajax({ 
        url: '/pesananSaya/setRating/'+pesanan_id+'/'+rating, 
        cache: false, 
        type: 'post', 
        dataType: 'json',
        // 带上Laravel的CSRF令牌,避免419错误
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        success: function(data) { 
            alert("Nilai rating dimasukkan.");
            // 只有请求成功后才刷新页面
            location.reload();
        },
        // 新增错误回调,方便调试问题
        error: function(xhr) {
            alert("Gagal mengirim rating: " + xhr.responseText);
        }
    }); 
}

2. 确保页面包含CSRF meta标签

在你的HTML头部添加CSRF令牌标签,这是Laravel处理POST请求的必要条件:

<meta name="csrf-token" content="{{ csrf_token() }}">

3. 优化Laravel控制器代码

你的控制器代码可以简化,避免多余的循环,同时返回更清晰的JSON响应:

public function setRatingPesananCust(Request $request, $id, $rating){ 
    $userId = Auth::user()->id; 
    
    // 直接更新对应用户、对应订单的评分记录,无需多次查询循环
    Rating::where('id_transaksi', $id)
          ->where('id_user', $userId)
          ->update(['nilai_rating' => $rating]);
    
    // 返回标准JSON响应,前端更容易判断状态
    return response()->json([
        'success' => true,
        'message' => 'Rating berhasil diperbarui'
    ]);
}

这样修改后,Firefox里的alert就能正常显示了——因为现在页面只会在Ajax请求成功完成、alert弹出后才会刷新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:20:52