是php json_encode&;AJAX破坏了我的阵列?

是php json_encode&;AJAX破坏了我的阵列?,php,javascript,ajax,Php,Javascript,Ajax,我抓取一些数据库条目,创建一个2D数组,然后用AJAX将它们传递给js。但是当我在javascript中循环数组时,它是一个“未定义”的混乱。dbArray的控制台日志运行良好,因此我知道PHP/AJAX正在运行。不确定我在循环中做错了什么 PHP('load-words.PHP): Javascript: $.ajax({ url: 'func/load-words.php', success: function(dbArray) { console.log(d

我抓取一些数据库条目,创建一个2D数组,然后用AJAX将它们传递给js。但是当我在javascript中循环数组时,它是一个“未定义”的混乱。dbArray的控制台日志运行良好,因此我知道PHP/AJAX正在运行。不确定我在循环中做错了什么

PHP('load-words.PHP):

Javascript:

$.ajax({
    url: 'func/load-words.php',
    success: function(dbArray) {
        console.log(dbArray);
        var items = "<ul>";
        for (var i in dbArray) {
            items += "<li><a href='#'><b>" + dbArray[i][0] + ' : ' + dbArray[i][1] + "</a></li>";
        }
        items += "</ul>";
        div = $('#dbArray');
        div.html(items);
    }
});
$.ajax({
url:'func/load words.php',
成功:功能(dbArray){
console.log(dbArray);
var items=“
    ”; 用于(dbArray中的var i){ 项目+=“
  • ”; } 项目+=“
”; div=$('dbArray'); div.html(项目); } });
我想这是失败的,因为jQuery将AJAX响应解释为字符串,因为PHP没有输出JSON头,AJAX也没有规定JSON。这很容易测试:

$.ajax({
    url: 'func/load-words.php',
    success: function(dbArray) { alert(typeof dbArray); /* "string"? */ }
});
试一试

$.ajax({
url:'func/load words.php',

dataType:'json',//console.log(dbArray);”的输出是什么?对于数组,应该使用
for(i=0;i
版本中的
var i用于迭代对象属性。OP称它为数组,但实际上它是一个对象,因为它以JSON的形式出现,所以for-in很好。但是JSON编码不是使它成为一个对象吗?请不要使用
mysql.*
函数来编写新代码。它们不再被维护,社区已经开始.看到了吗?相反,你应该学习并使用or。如果你不能决定使用哪一个,将对你有所帮助。如果你选择PDO,.完美。非常感谢。这是一个很好的教训,下次我会知道的!
$.ajax({
    url: 'func/load-words.php',
    success: function(dbArray) { alert(typeof dbArray); /* "string"? */ }
});
$.ajax({
    url: 'func/load-words.php',
    dataType: 'json', //<-- now we explicitly expect JSON
    success: function(dbArray) { alert(typeof dbArray); /* "object"? */ }
});