0

いくつかのデータベース エントリを取得し、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);
    }
});
4

1 に答える 1

2

PHPがJSONヘッダーを出力しておらず、AJAXがJSONを規定していないため、jQueryがAJAX応答を文字列として解釈しているため、これは失敗していると思います。これは簡単にテストできます:

$.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"? */ }
});
于 2012-07-12T16:03:16.747 に答える