如何在javascript中解析dict

时间:2011-01-18 10:47:46

标签: javascript jquery

$.post("http://10.0.1.101:9000/search/", {q: ""+inputString+""}, function(data){
    if(data.length >0) {
     alert(data);
     $('#suggestions').show();
     $('#autoSuggestionsList').html(data);

    }
   });

alert(data) gives me : 
    {"result": ["taxo",  "tere", "tuy"], "success": "True"}

但是我希望警报只给我["taxo", "tere", "tuy"]这个值。 alert(data['result'])给了我未定义的值。

3 个答案:

答案 0 :(得分:1)

您需要将代码更改为:

$.post("http://10.0.1.101:9000/search/", {q: ""+inputString+""}, function(data){
  if(data.length > 0) {
    alert(data);
    $('#suggestions').show();
    $('#autoSuggestionsList').html(data);
  }
 },'json');

注意$ .post调用的'json'部分 - 它告诉jQuery在结果中期望json,并将其解析为可以按照你的意愿访问的javascript对象。

Look here for the full documentation

答案 1 :(得分:0)

我认为您的数据是以字符串形式返回的。使用$ .post({})时,您需要告诉jQuery您期望JSON格式的数据:

$.ajax({dataType: json, type: post, ...});

请参阅:http://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

data.result会为您提供列表,因此您可以:

alert(data.result.join(','));

还要确保在服务器上指定了正确的内容类型:application/json或jquery不会将结果解析为JSON对象。如果您无法控制服务器,则可以在客户端上指定dataType参数:

$.ajax({
    url: 'http://10.0.1.101:9000/search/',
    data: { q: inputString }, 
    dataType: 'json',
    success: function(data) {
        if(data.result > 0) {
            $('#suggestions').show();
            $('#autoSuggestionsList').html(data.result.join(','));
        }
    }
});