利用从服务器端返回到客户端的JSON

时间:2011-05-16 12:03:32

标签: json jquery

更新3:

以下似乎没有任何区别,与更新2中的脚本完全相同:

var $obj = jQuery.parseJSON(results);

$.each($obj, function(key, value) { 
    alert(key + " - " + value);
});

更新2:

$.each(jQuery.parseJSON(results), function(key, value) { 
    alert(key + " - " + value);
});

上面的脚本现在返回当前的警报数,但不返回正确的数据。它给了我这个:

0 - [object, Object]
1 - [object, Object]
2 - [object, Object]

更新1:

get_json.aspx目前正在返回此内容:

[{"key":1,"value":"Default"},{"key":2,"value":"Reports"},{"key":3,"value":"Other"}]

现在的脚本现在看起来像这样:

$.ajax({
    url: 'get_json.aspx',
    type: 'GET',
    error: function(xhr, status, error) {
        alert('Error: ' + status + '\nError Text: ' + error + '\nResponse Text: ' + xhr.responseText);
    },
    success: function(results) {
        $.each(results, function(key, value) { 
            alert(key + " - " + value);
        });
    }
});

但是当我访问这个网页时,它只是给了我一个永无止境的javascript警报,即。

    0 - undefined
    1 - undefined
    2 - undefined
    3 - undefined
...
    75 - undefined
    76 - undefined
    77 - undefined
    78 - undefined

原始问题:

如果我从服务器返回key:value配对的JSON。我该如何使用那个JSON?

我正在尝试在下面的ajax / jquery的成功部分中使用JSON:

$.ajax({
    url: 'get_json.aspx',
    type: 'GET',
    error: function(xhr, status, error) {
        alert('Error: ' + status + '\nError Text: ' + error + '\nResponse Text: ' + xhr.responseText);
    },
    success: function(results) {
    /*
    using the key:value pair json return, if 3 pairs are return, somehow generate the following
    where key = the value of the querystring in the url, i.e. tab = 1,2,3
    and value = Default, Reports, Other
        $("#tabs").tabs("add","tabs.aspx?tab=1","Default")
        $("#tabs").tabs("add","tabs.aspx?tab=2","Reports")
        $("#tabs").tabs("add","tabs.aspx?tab=3","Other")
    */
    }
});

3 个答案:

答案 0 :(得分:2)

你可能想要这样的东西:

<击>     $ .each(结果,函数(键,值){       $(“#tabs”)。tabs(“add”,“tabs.aspx?tab =”+ key,value)     });

$.each(results, function(i) { 
    $("#tabs").tabs("add","tabs.aspx?tab=" + results[i].key, results[i].value)
});

如果响应的内容类型是“text / json”,那么您不需要使用parseJson(),因为JQuery会为您执行此操作。

答案 1 :(得分:1)

答案 2 :(得分:0)

当你正确地 形成json时(你可以在这里验证它是否正确形成Json Parser Online)。您可以使用javascript提供的eval()函数。即

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

要使用返回的文本字符串...请执行以下操作:

var myObject = eval('(' + myJSONtext + ')');

如果您坚持使用jquery解析选项,请使用:

var obj = jQuery.parseJSON( myJsontext ); 

此信息位于JSON in JavaScript