jquery如何从这个数组中获取数据

时间:2014-08-18 09:45:13

标签: c# javascript jquery

这是我的c#代码:

Dictionary<string, double[][]> dictionary = new Dictionary<string, double[][]>();
dictionary.Add("ServiceLevel", finalArray);
dictionary.Add("NumberOfCalls", numberOfCallsArray);

finalArraynumberOfCallsArray double[][]充满数据的地方。

我将它发送到jquery:

string jsonformatstring = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
HttpContext.Current.Response.Write(jsonformatstring);
HttpContext.Current.Response.End();

然后在jquery中执行json请求并成功获取数据。我这样做:

var data = $.map(result, function (arr, key) {
               return { label: key, data: arr };
           });

console.log(data["ServiceLevel"] + "--");

我的问题

我在尝试此操作时在控制台中获得undefinedconsole.log(data["ServiceLevel"] + "--");

也许我以错误的方式获得价值?

更新1

我这样做了:     的console.log(结果); 我得到了这个

enter image description here

更新2

我试过了:

var s = JSON.stringify(result); console.log(s)

结果如下:

{"ServiceLevel":[[1390608000000,50],[1392595200000,0],[1393286400000,66.66666666666667],[1393891200000,50],[1394064000000,0],[1394236800000,50],[1394323200000,0],[1394841600000,50],[1394928000000,33.333333],[1395014400000,0],[1395100800000,50],[1395273600000,0],[1395446400000,0],[1395619200000,0],[1395705600000,0],[1395878400000,50],[1396310400000,50],[1396483200000,0],[1396656000000,0],[1396828800000,50],[1396915200000,50],[1397001600000,50],[1397347200000,33.333333],[1397433600000,50],[1397952000000,0],[1398124800000,50],[1398556800000,0],[1398902400000,45],[1399075200000,0],[1399161600000,0],[1399334400000,0],[1399420800000,50],[1399680000000,0],[1399852800000,50],[1399939200000,0],[1400025600000,0],[1400112000000,33.333333],[1400284800000,40],[1400371200000,0],[1400457600000,50],[1400716800000,40],[1402185600000,50],[1402358400000,50],[1402531200000,0],[1402704000000,44.117647],[1402876800000,50],[1403308800000,50],[1403481600000,50],[1403913600000,0],[1407283200000,0],[1390780800000,100],[1391040000000,100],[1391558400000,100],[1392249600000,100],[1392681600000,75],[1392854400000,100],[1396137600000,100],[1397260800000,100],[1399507200000,100],[1400889600000,88.888888],[1401840000000,100],[1403654400000,100],[1407369600000,70.83333300000001],[1407628800000,100],[1408060800000,100],[1408233600000,50],[1408320000000,0]],"NumberOfCalls":[[1390608000000,50],[1392595200000,2],[1393286400000,14],[1393891200000,7],[1394064000000,1],[1394236800000,36],[1394323200000,3],[1394841600000,10],[1394928000000,11],[1395014400000,2],[1395100800000,45],[1395273600000,24],[1395446400000,13],[1395619200000,11],[1395705600000,11],[1395878400000,3],[1396310400000,18],[1396483200000,44],[1396656000000,2],[1396828800000,4],[1396915200000,25],[1397001600000,3],[1397347200000,11],[1397433600000,10],[1397952000000,15],[1398124800000,18],[1398556800000,1],[1398902400000,13],[1399075200000,2],[1399161600000,2],[1399334400000,1],[1399420800000,16],[1399680000000,3],[1399852800000,19],[1399939200000,32],[1400025600000,1],[1400112000000,20],[1400284800000,6],[1400371200000,3],[1400457600000,9],[1400716800000,12],[1402185600000,21],[1402358400000,14],[1402531200000,4],[1402704000000,37],[1402876800000,13],[1403308800000,18],[1403481600000,2],[1403913600000,1],[1407283200000,2],[1390780800000,2],[1391040000000,6],[1391558400000,6],[1392249600000,5],[1392681600000,6],[1392854400000,1],[1396137600000,2],[1397260800000,2],[1399507200000,1],[1400889600000,18],[1401840000000,6],[1403654400000,3],[1407369600000,16]

3 个答案:

答案 0 :(得分:1)

您的输入不明确,所以我假设您有类似

的数据
var result = {"ServiceLevel":[[1390608000000,50],[1392595200000,0]], 
              "NumberOfCalls":[[12,10],[100,0]]};

var arr = $ .map(结果,函数(arr,key){
  return {label:key,data:arr}; });

转换为数组:

var arr = $.map(result, function (arr, key) {
               return { label: key, data: arr };
           });

阅读元素:

element at position 1:
 arr[0].data[0][1] is 1

 element at position 3:
 arr[0].data[2][2] is 3

获得关键用途:

arr[0].label , it will give you "ServiceLevel"
arr[1].label , it will give you "NumberOfCalls"

答案 1 :(得分:0)

var data = $.map(result, function (arr, key) {
               return { label: key, data: arr };
           });

您将返回带有“label”和“data”元素的关联数组。 data [“data”]应包含您要查找的内容。

如果你这样做了:

       $.map(result, function (arr, key) {
           console.log(arr["ServiceLevel"] + "--"); 
           return { label: key, data: arr };
       });
你会看到它被退回了。这只是因为你把你的“数据”包装在另一个数组中。

答案 2 :(得分:0)

我相信您未定义,因为您没有解析从c#代码收到的json。 我也有这个问题,事情是这样的:

string jsonformatstring = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
        HttpContext.Current.Response.Write(jsonformatstring);
        HttpContext.Current.Response.End();

返回一个String。要用作Json,您需要解析它,JsonConvert.SerializeObject只将对象格式化为{[key:value]}。

这里是我用json制作的ajax成功函数的样本:

success: function (data) {//on success
    var results = JSON.parse(data);         //parse result to work on it

    $.each(results, function (index, element) {
        //do something
    });

我不知道如何检索你的Json字符串,但在处理它之前尝试解析它:)