我想传递一个字典>使用JavaScript的客户端。
我确实看过这个post而且我并不清楚如何继续。 如果我做错了什么,我会解释我想做什么。 该词典包含'名称' Excel文件中所有工作表的键,以及'值'是该工作表中第一行的列值。 客户端的UI应该有两个" drop list",第一个将包含密钥,该密钥是Excel文件中工作表的所有名称。 第二行包含将在第一个下拉列表中选择的工作表第一行的所有列值 - 实际上是List作为字典中的值。
因此所有后端C#代码都运行良好。现在我需要前端JavaScript的帮助。
如何将数据解析为键值,以便我可以搜索"搜索"在客户选择一些"键"在第一个下拉列表中,我可以将相关值作为列表返回?
感谢名单!
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#中对此进行搜索?我希望能够做到这样的事情:" dict.TryGetValue(key,out value); out值将作为字符串数组或List返回。
答案 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
将包含属性First
和Sec
,对于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]);
}
}