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

如何在jQuery中访问返回为JSON的Dictionary<string, string>数据?

解决Ajax返回JSON对象的访问问题

嘿,我来帮你搞定这个问题!你遇到的Uncaught SyntaxError: Unexpected token o错误,根源很简单:jQuery的$.post方法已经自动帮你把服务器返回的JSON字符串解析成JavaScript对象了,你不需要再手动调用JSON.parse()去解析它!

当你打印returnedData到控制台时,看到的[object Object]就是最好的证明——它已经是一个可直接操作的对象,不是JSON字符串。这时候再强行用JSON.parse()去解析对象,自然会抛出语法错误。

修正后的代码示例

直接使用返回的对象,然后遍历键值对检查第二个字段即可:

$.post(baseUrl + '/de/SAM/GenerateLicensePlateSeries', {
    letters: $("#seriesLetters").val(),
    number: $("#seriesNumbers").val(),
    amount: $("#seriesAmount").val()
}, function (returnedData) {
    // 直接使用returnedData,无需JSON.parse
    console.log(returnedData); // 现在能看到完整的键值对结构

    // 方式1:用for...in循环遍历每个车牌
    for (const plateNum in returnedData) {
        // 确保遍历的是对象自身的属性(避免原型链上的属性)
        if (returnedData.hasOwnProperty(plateNum)) {
            const commissionNum = returnedData[plateNum];
            if (commissionNum) {
                console.log(`车牌 ${plateNum} 已被占用,对应编号:${commissionNum}`);
                // 这里可以添加你需要的业务逻辑,比如标记已占用的车牌
            } else {
                console.log(`车牌 ${plateNum} 可用`);
            }
        }
    }

    // 方式2:用Object.entries更直观地获取键值对(ES6+支持)
    Object.entries(returnedData).forEach(([plateNum, commissionNum]) => {
        if (commissionNum) {
            console.log(`车牌 ${plateNum} 已被占用,对应编号:${commissionNum}`);
        } else {
            console.log(`车牌 ${plateNum} 可用`);
        }
    });
});

额外优化建议

你还可以显式告诉jQuery你期望返回JSON类型,在$.post的末尾添加'json'参数,这样即使服务器返回的响应头没正确设置,jQuery也会自动解析:

$.post(
    baseUrl + '/de/SAM/GenerateLicensePlateSeries',
    {
        letters: $("#seriesLetters").val(),
        number: $("#seriesNumbers").val(),
        amount: $("#seriesAmount").val()
    },
    function (returnedData) {
        // 处理逻辑不变
    },
    'json' // 指定返回数据类型为JSON
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:32:42