使用选择列表值返回json

时间:2018-03-02 20:11:50

标签: jquery json

我有一个选择列表:

<select name="Country" id="Country">
    <option value="US">United States</option>
    <option value="DE">Germany</option>
</select>

还有一些json

[
    {
        "selection":"US",
        "foo": "lorem"
    },
    {
        "selection":"US",
        "foo": "lorem lorem"
    },
    {
        "selection":"DE",
        "foo": "ipsum"
    },
    {
        "selection":"DE",
        "foo": "ipsum ipsum" 
    }
]

我想要返回所有内容&#34;选择&#34; object匹配选择列表中的值。

function load_Content() {
    $.getJSON('./path/to.json', function(data) {
        //this works, it gets the value from the select
        var filter = $('#ForexCountry').val();
        var myData = JSON.parse(//need to parse json into string?);
        var countryData = $.grep(myData.filter, function (element, 
        index) {
            return element.category == filter;
        });
    });
}

我似乎无法以正确的格式获得此信息。我需要:

  1. 从下拉列表中获取国家/地区代码并将其存储为&#34;过滤&#34;
  2. 获取json,过滤它只返回其选择&#34;&#34;与&#34;过滤器&#34;相同值
  3. 返回数据

2 个答案:

答案 0 :(得分:1)

您可以在此处使用.filter。它将根据回调中的条件返回所有结果。此外,您不需要解析对JSON的响应,因为它已经是JSON。

var filter = $('#ForexCountry').val();
var countryData = data.filter(el => el.selection === filter);

答案 1 :(得分:1)

如果你想使用grep方法,那就像

function load_Content() {
    $.getJSON('./path/to.json', function(data) {
        var filter = $('#ForexCountry').val();
        var matchingElements = $.grep(data, function(element){
            return element.selection === filter;
        });
    });
}