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

如何在AJAX的success回调函数中正确使用for循环遍历数组?

解决AJAX返回数组后循环遍历异常的问题

看起来你遇到的核心问题是AJAX返回的JSON数据没有被正确解析为JavaScript数组,导致你用for循环的时候其实是在遍历字符串的每个字符,所以才会出现“值被逐个拆分”的情况。下面一步步帮你解决:

问题根源

你的AJAX配置里写的是datatype: 'json',但jQuery的AJAX参数是大小写敏感的,正确的参数名应该是dataType(首字母大写)。因为参数名写错了,jQuery没有自动把后端返回的JSON字符串解析成数组/对象,所以data其实是一个字符串——当你用arr.length的时候,取的是字符串的长度,循环时arr[i]就是字符串的第i个字符,自然会出现“值被拆分”的现象。

另外,document.write在页面加载完成后使用会直接覆盖整个页面,这显然不是你想要的展示效果,建议换成DOM追加的方式来渲染内容。

修正后的代码

$('#TDate').on('input change', function() {
    var name = $('#TDate').val();
    var credit = 0;
    var debit = 0;
    $.ajax({
        type: "POST",
        url: "<?php echo base_url();?>BookKeeping/item",
        data: {name: name},
        dataType: 'json', // 修正参数名的大小写问题
        success: function (data) {
            // 先确保数据是数组格式,避免后端返回异常数据
            if (!Array.isArray(data)) {
                // 若后端返回的仍是字符串,手动解析JSON
                try {
                    data = JSON.parse(data);
                } catch(e) {
                    alert('数据解析失败:' + e.message);
                    return;
                }
            }
            // 准备一个页面容器来存放结果(比如提前在页面加<div id="result"></div>)
            var $resultContainer = $('#result');
            $resultContainer.empty(); // 清空之前的旧内容
            for (var i = 0; i < data.length; i++){
                $resultContainer.append("<br><br>array index: " + i);
                var obj = data[i];
                // 确保当前项是对象再遍历属性
                if (typeof obj === 'object' && obj !== null) {
                    for (var key in obj){
                        // 只遍历对象自身的属性,排除原型链上的属性
                        if (obj.hasOwnProperty(key)) {
                            var value = obj[key];
                            $resultContainer.append("<br> - " + key + ": " + value);
                        }
                    }
                }
            }
        },
        error: function(xhr, status, error) {
            // 增加错误处理,方便排查请求失败的原因
            alert('请求失败:' + error);
        }
    });
});

额外注意事项

  • 确保后端返回的是标准JSON格式,并且响应头的Content-Type设置为application/json,这样jQuery的自动解析会更可靠。
  • 永远不要在AJAX回调里用document.write,它会直接替换整个页面内容,推荐用append/html等方法操作指定DOM元素。
  • 加上error回调函数,可以帮你快速排查AJAX请求失败的原因,比如URL错误、后端报错等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:08:00