PHP/JQUERY-显示json的每个子数组


PHP / JQUERY - display each sub array of json

我已经在下面发布了我的脚本,当前脚本的输出是这样的。

["Error1"、"Error2"、"Error3"]

["Good1"、"Good2"、"古德3"]

我想在单独的段落中输出每个错误,在另一段中输出每个好

PHP脚本

        $Error[] = "Error1";
        $Error[] = "Error2";
        $Error[] = "Error3";
        $Good[] = "Good1";
        $Good[] = "Good2";
        $Good[] = "Good3";
        $Data["Error"] = json_encode($Error);
        $Data["Good"] = json_encode($Good);
        die(json_encode($Data));

Jquery脚本

    function _Request()
    {
        $("form").submit(function(e)
        {
            e.preventDefault();
            $.ajax(
            {
                url: $(this).attr("action"),
                type: "POST",
                data: $(this).serializeArray(),
                dataType: 'json',
                success: function(Result)
                {
                    var Data = "";
                    $.each(Result, function(Index, Item)
                    {
                        Data += "<p>" + Item + "</p>";
                    });
                    $("#Result").html(Data);
                }
            });
        });
    }

不要单独对数组进行JSON编码,只需在最后对完整的数据结构进行编码,否则在客户端解码时,嵌套的JSON将被视为字符串。

这样做:

    $Error[] = "Error1";
    $Error[] = "Error2";
    $Error[] = "Error3";
    $Good[] = "Good1";
    $Good[] = "Good2";
    $Good[] = "Good3";
    $Data["Error"] = $Error;
    $Data["Good"] = $Good;
    echo json_encode($Data);

然后,您将在客户端处理这样的数据:

        $.ajax(
        {
            url: $(this).attr("action"),
            type: "POST",
            data: $(this).serializeArray(),
            dataType: 'json',
            success: function(data)
            {
                var $result = $('#Result');
                $result.empty();
                $.each(data.Error, function(idx, item) {
                    $result.append('<p class="error">' + item + '</p>');
                });
                $.each(data.Good, function(idx, item) {
                    $result.append('<p class="good">' + item + '</p>');
                });
            }
        });

注意,我在段落中添加了类名,以防您想通过方便的类来控制它们的CSS显示。

你是这样说的吗?

                var Data = "";
                // error
                $.each(Result.Error, function(Index, Item)
                {
                    Data += "<p>" + Item + "</p>";
                });
                //Good
                $.each(Result.Good, function(Index, Item)
                {
                    Data += "<p>" + Item + "</p>";
                });
                $("#Result").html(Data);

您需要进入第二级

假设您的数据是:

Result = {Error:["Error1","Error2","Error3"],
Good:["Good1","Good2","Good3"]}

然后。。。

$.each(Result, function(Index, Item)
  {
   $.each(Item, function(i,d){    
      Data += "<p>" + d + "</p>";
   })
});

这是一把小提琴:http://jsfiddle.net/charrisgw/kjqdhfec/