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

为何FiveM脚本客户端回调无法接收正确变量类型?

FiveM脚本获取citizenId时客户端回调数据类型异常问题解决

开发FiveM脚本时遇到以下问题:需要获取玩家的citizenId,服务器事件返回的是字符串(已通过控制台打印验证变量及类型正确),但数据返回至客户端回调函数后变成了object,打印时触发报错:SCRIPT ERROR: error object is not a string。

复现代码

前端触发回调的JS脚本(可正常运行)

文件路径:html/script.js

const createOrg = () =>{
    var orgName = document.getElementById("neworg-name-input").value;
    fetch(`https://${GetParentResourceName()}/orgcreateCb`, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json; charset=UTF-8',
        },
        body: JSON.stringify({
            organizationName: orgName,
        })
    }).then(resp => resp.json()).then(resp => console.log(resp));
    //console.log(orgName);
};

服务器事件(可正常运行)

文件路径:server/main.lua

RegisterServerEvent('getPlayerCitizenId')
AddEventHandler('getPlayerCitizenId', function(cb)
    local currentCitizenId = QBCore.Functions.GetPlayer(source).PlayerData.citizenid
    cb(tostring(currentCitizenId))
end)

异常的客户端回调

文件路径:client/main.lua

RegisterNUICallback("orgcreateCb", function(data, cb)
    TriggerServerEvent('getPlayerCitizenId', function(citizenId)
        print('Citizen ID:', citizenId)
    end)
end)

问题原因及解决方案

核心问题

TriggerServerEvent是单向事件发送API,不支持直接传递回调函数接收返回值。你之前传递的回调函数会被当作普通参数发给服务器,导致服务器返回的字符串被错误包裹成对象,最终客户端接收时类型异常。

修正后的代码

服务器端(改用QBCore回调注册)

修改server/main.lua:

RegisterServerCallback('getPlayerCitizenId', function(source, cb)
    local currentCitizenId = QBCore.Functions.GetPlayer(source).PlayerData.citizenid
    cb(tostring(currentCitizenId))
end)

客户端(改用TriggerServerCallback)

修改client/main.lua:

RegisterNUICallback("orgcreateCb", function(data, cb)
    TriggerServerCallback('getPlayerCitizenId', function(citizenId)
        print('Citizen ID:', citizenId)
        -- 可选:将结果返回给前端
        cb({ status = 'success', citizenId = citizenId })
    end)
end)

补充说明

  • TriggerServerCallback是QBCore提供的异步回调机制,专门用于客户端向服务器请求数据并接收返回值,能保证数据类型正确传递。
  • 客户端的NUICallback必须调用cb()方法,否则前端的fetch请求会一直处于挂起状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:01:16