0

私はphpからjsonデータを取得しようとしていますが、jquery jsonを使用すると、未定義のオブジェクトが表示されます。コードのどこに問題があるのか​​ わかりません。誰でも助けることができますか?

json コードは次のとおりです。

$("document").ready(function() {
$("body").css("background", "#ccc");
$(".sitebuttons").click(function() {
    $("#subcat").html("");
    $.getJSON("subcat.php", {catid: $(this).attr("id")}, function(data){
        $.each(data, function(index, array) {
            $("#subcat").append("<input type='button' class='subcat' id='" + data.subcat_id + "' value='"
                    + data.subcat_name + "'></p>");
        });
    });
});

});

ここにPHPコードがあります

 $select_subcat = mysql_query("SELECT * FROM wp_leadsubcat WHERE cat_id=" . $_GET['catid']);
$rows = array();
while ($result2 = mysql_fetch_assoc($select_subcat)) {
    $rows[] = $result2;
}
echo json_encode($rows);

ここでスクリーンショットを確認してください: http://imageshack.us/photo/my-images/560/screenshotqvl.png/

4

2 に答える 2

1

jquery eachに関するドキュメントを読んでください。

要するにjQuery.each( collection, callback(indexInArray, valueOfElement) )

index はインデックスを意味し、valueOfElement はコレクションの現在の要素を意味します。あなたのケースの行で。

ここに修正があります。

$("document").ready(function() {
$("body").css("background", "#ccc");
$(".sitebuttons").click(function() {
  $("#subcat").html("");
  $.getJSON("subcat.php", {catid: $(this).attr("id")}, function(data){
    $.each(data, function(index, row) {
      $("#subcat").append(
         "<input type='button' class='subcat' id='" + row.subcat_id + "' value='"+ row.subcat_name + "'>"
      );
    });
  });
});

追加部分はこのように最適化できます(ご覧のとおり、より読みやすくなっています)

$("#subcat").append($(
  "<input/>"
, {
    cssClass: 'subcat'
  , id: row.subcat_id
  , value: row.subcat_name
}
));
于 2013-01-18T16:37:36.627 に答える
1

インデックスが問題を解決すると思います

 $("#subcat").append("<input type='button' class='subcat' id='" + data[index].subcat_id + "' value='"
                    + data[index].subcat_name + "'></p>");
于 2013-01-18T15:56:30.710 に答える