php - php json_encode 和 AJAX 是否破坏了我的数组?

标签 php javascript ajax

我正在抓取一些数据库条目,创建一个 2D 数组,然后使用 AJAX 将它们传递给 js。但是当我在 JavaScript 中循环数组时,这是一个“未定义”的困惑。 dbArray 的控制台日志工作正常,所以我知道 PHP/AJAX 正在工作。不确定我的循环做错了什么......

PHP('load-words.php):

$query = mysql_query("
SELECT * FROM words 
ORDER BY RAND() 
LIMIT 50
") or die(mysql_error()); 

$dbArray = array(); 
while ($row = mysql_fetch_assoc($query)) {
    $word_phrase = stripslashes($row['word_phrase']);
    $description = stripslashes($row['description']);
    // construct a 2D array containing each word and description
    $dbArray[] = array($word_phrase,$description);      
};

echo json_encode($dbArray);

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);
    }
});

最佳答案

我猜这是失败的,因为 jQuery 将 AJAX 响应解释为字符串,因为您的 PHP 没有输出 JSON header ,并且您的 AJAX 没有规定 JSON。这很容易测试:

$.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"? */ }
});

关于php - php json_encode 和 AJAX 是否破坏了我的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11455724/

相关文章:

jquery - 欺骗 ASP.NET 认为请求是 jQuery 文件上传的 Ajax 请求

jquery - 我如何通过 jquery 和 ajax 替换图像(在 div 内)

php - 如何在不导致我的 sql 运行两次的情况下分配 php 返回值?

javascript - 画廊通过 jQuery 淡出和淡入

php - Symfony2 - 注销并清除缓存 + 防止后退按钮

javascript - Chrome 扩展程序 : How to send html form data to a php page upon button being clicked which redirects to said php page

c# - 使用 javascript 创建新字典

javascript - PayPal Checkout JS 错误处理

JavaScript 正则表达式匹配索引

javascript - 当数据源是数组时,jQuery DataTables 刷新网格