传递字典<string,list <string>&gt;到java脚本

时间:2015-04-23 17:14:54

标签: javascript json dictionary asp.net-web-api

我想传递一个字典&gt;使用JavaScript的客户端。

我确实看过这个post而且我并不清楚如何继续。 如果我做错了什么,我会解释我想做什么。 该词典包含&#39;名称&#39; Excel文件中所有工作表的键,以及&#39;值&#39;是该工作表中第一行的列值。 客户端的UI应该有两个&#34; drop list&#34;,第一个将包含密钥,该密钥是Excel文件中工作表的所有名称。 第二行包含将在第一个下拉列表中选择的工作表第一行的所有列值 - 实际上是List作为字典中的值。

因此所有后端C#代码都运行良好。现在我需要前端JavaScript的帮助。

如何将数据解析为键值,以便我可以搜索&#34;搜索&#34;在客户选择一些&#34;键&#34;在第一个下拉列表中,我可以将相关值作为列表返回?

感谢名单!

   var ajaxRequest = $.ajax({
        type: "POST",
        url: "http://localhost:1894/api/Values",
        contentType: false,
        processData: false,
        data: data,
        success: function(dataTest) {

        }
    });

这是我从服务器返回的JSON:

{"First":["Name","Link","User","Pass"],"Sec":["test01"]}

我如何在C#中对此进行搜索?我希望能够做到这样的事情:&#34; dict.TryGetValue(key,out value); out值将作为字符串数组或List返回。

1 个答案:

答案 0 :(得分:0)

试试这个(你不需要var ajaxRequest变量,你可以像这样直接调用:

 $.ajax({
    type: "POST",
    url: "http://localhost:1894/api/Values",
    dataType: "json",
    data: data,
    success: function(dataTest) {
        //dataTest should contain your data in a javascript object
        for(var i = 0; i < dataTest.First.length; i++)
        {
            window.alert("" + dataTest.First[i]);
        }
        for(var i = 0; i < dataTest.Sec.length; i++)
        {
            window.alert("" + dataTest.Sec[i]);
        }
        //etc...
        //this should print the values returned if you showed me exactly how your JSON is...
    }
 });

javascript对象将包含带有数组的属性作为每个属性的值。可以把它想象成<String, String[]>的地图。因此,您返回的对象dataTest将包含属性FirstSec,对于First,与关键First关联的值将为["Name","Link","User","Pass"]只是一个数组。 Sec也是如此。所以`dataTest.First [0]将等于“Name”而dataTest.First [1]将等于“Link”等...

***************************************** UPDATE ***** *********************************

您可以将dataTest保存到此示例中的全局变量(myObject),然后您可以像这样访问:

var key = "First";
// Or if you want to get your key from a dropdown (select) element then you could do like this:
var key = document.getElementById("myselect").options[document.getElementById("myselect").selectedIndex].innerHTML;

if(myObject[key] != undefined)
{
    //That means there is values for this key.
    //Loop through values or do whatever you want with myObject[key].
    for(var i = 0; i < myObject[key].length; i++)
    {
        window.alert("" + myObject[key][i]);
    }
}