如何解码JSON对象并迭代它?

San*_*ing 4 javascript ajax jquery json

这篇文章中,我学习了如何在服务器端编码对象,现在我想在客户端解码它.

在客户端我做

$.ajax({
    type: "GET",
    url: "/cgi-bin/ajax_sort.pl",
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    data: { "column" : this.id },

    error: function(XMLHttpRequest, textStatus, errorThrown) {
        showError('responseText: ' + XMLHttpRequest.responseText);
        showError('textStatus: ' + textStatus);
        showError('errorThrown: ' + errorThrown);
    },

    success: function(result){
        if (result.error) {
            showError(result.error);
        } else {

        var obj = jQuery.parseJSON(result);

        }
    }
});
Run Code Online (Sandbox Code Playgroud)

obj现在是否包含已解码的JSON数据?

如果是这样,该对象看起来像服务器端(Perl的输出Data::Dumper)

$VAR1 = {
          '127' => {
                     'owners' => [
                                   'm'
                                 ],
                     'users' => [
                                  'hh',
                                  'do'
                                ],
                     'date_end' => '24/05-2011',
                     'title' => 'dfg',
                     'date_begin' => '24/05-2011',
                     'members_groups' => [],
                     'type' => 'individuel'
                   },
          '276' => {
                     ...
Run Code Online (Sandbox Code Playgroud)

是否obj确实包含了解码的JSON,我怎么遍历对象?

lon*_*day 5

因为您指定了dataType: 'json',result应该已经包含从HTTP响应中反序列化的Javascript对象.$.parseJSON应该没必要.

您可以通过以下方式循环$.each:

success: function(result){
    if (result.error) {
        showError(result.error);
    } else {
        $.each(result, function(key, value) {
            alert(value.title).
        });
    }
}
Run Code Online (Sandbox Code Playgroud)