0

getJSON で 2 つの異なる配列を渡すことは可能ですか?

$.getJSON('<?php echo $_SERVER['SCRIPT_NAME']; ?>', {
    ajax: 'ajax_article_partlist' ,
    parent_article: $('#selected_article').val()
},
function(data) {
     $('#articles').html('');
     $('#article_table').show('slide');
        for (var i = 0; i < data.length; i++) {
        $('#articles').append("<p>"+data[i]+"</p>");
        }
});

これは私のリクエストです。php 側ではエコーと配列を行います。しかし、同じリクエストで渡す必要がある2番目の配列を取得しました。それは可能ですか、それとも新しいgetJSONを作成する必要がありますか?

phpコード:

    case 'ajax_article_partlist' :
    header('Content-type: application/json');

    $form->addFormField(new FW_HTML_Form_Request('parent_article'));

    $form->resolveRequest();

    $parent_article = $form->getValue('parent_article');
    $part_list =$db_obj->getFormatedPartList($parent_article);
    $db_obj->checkArticleProgram($parent_article);

    echo json_encode($part_list);
    include($_SERVER['DOCUMENT_ROOT'].'/inc/includes/cms.footer.inc');
    exit;
    break;
4

3 に答える 3

4

私のPHPは少し錆びていますが、これはうまくいくかもしれません:

$two_arrays = array(
    "array1" -> $part1_list,
    "array2" -> $part2_list
);

echo json_encode($two_arrays);

data.array1クライアント側では、次のように配列にアクセスできます。data.array2

于 2012-11-30T08:49:20.277 に答える
2

配列構文の詳細は次のとおりです: http://www.php.net/manual/en/language.types.array.php

echo json_encode(array("part_list" => $part_list, "second_array" => $second_array));

そして getJSON 成功関数より:

function(data) {
     $('#articles').html('');
     $('#article_table').show('slide');
     for (var i = 0; i < data.parts_list.length; i++) {
            $('#articles').append("<p>"+data.parts_list[i]+"</p>");
     }
     for (var i = 0; i < data.second_array.length; i++) {
           //do somethign with second array
     }
}
于 2012-11-30T08:51:11.453 に答える
1

このようにしてみてください

$json=new stdClass();
$a=array('a'=>1);
$b=array('b'=>2);
$json->a=array();
$json->b=array();
$json->a=$a;
$json->b=$b;
echo json_encode($json);
于 2012-11-30T08:53:15.077 に答える