我正在抓取一些数据库条目,创建一个 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/