【问题标题】:Change value on Json array and put in Hiddenfield更改 Json 数组的值并放入 Hiddenfield
【发布时间】:2018-10-19 15:02:33
【问题描述】:

我在asp.net的hiddenfield里有下一段文字,这个值为Json serialize

text = "[{ "Element":"E001", "City":"Madrid", "Country":"Spain"},
    { "Element":"E003", "City":"Paris", "Country":"Italy"},
    { "Element":"A001", "City":"Pekin", "Country":"China"}]

我想用这样的 JS 函数改变元素的值

function ModificarDato(jsonelemento, jsonvalor)
{
    var vjson = eval($("[ id$='H_Ins").val());
    var vjson2 = `$`(jQuery.parseJSON(JSON.stringify(vjson))).each(function ()
    {
        var vElemento = this.Element;
        var vCity = this.City;
        var vValor = this.Country;

        if (vElemento == jsonelemento)
        {
            this.Country = jsonvalor;
        }
    });

    var jsonvalorfinal = JSON.stringify(vjson2);

    alert("Valor final : " + jsonvalorfinal);
    $("[ id$='H_Ins").val(jsonvalorfinal);
}

问题是当我将 jsonvalorfinal 放在隐藏字段中时,文本是不同的

text = "{"0":{"Element":"E001", "City":"Madrid", "Country":"Spain"},
    "1":{"Element":"E003", "City":"Paris", "Country":"France"},
    "2":{"Element":"A003", "City":"Pekin", "Country":"China"},
    "length":3}

我需要第一个字符串的相同格式才能继续使用另一个函数。有可能

谢谢

【问题讨论】:

  • I want change the value of element whith a JS function like this 我不明白吗?你能清楚地说明你想做什么吗?
  • 用户按下了一系列按钮,每个按钮都执行函数 ModificarDato("E003", "France");
  • 所以你想更新你的 JSON 数组?与函数的参数?

标签: jquery asp.net json


【解决方案1】:

你可以这样做,你可以找到你要更新的对象的索引并更新它的国家属性。

function ModifyData(element, newCountryValue) {
  let text = `[
    {
        "Element": "E001",
        "City": "Madrid",
        "Country": "Spain"
    },
    {
        "Element": "E003",
        "City": "Paris",
        "Country": "Italy"
    },
    {
        "Element": "A001",
        "City": "Pekin",
        "Country": "China"
    }
]`;

  let parsedArray = JSON.parse(text);

  let indexToBeModified = parsedArray.findIndex(item => item.Element == element);

  parsedArray[indexToBeModified].Country = newCountryValue;

  return parsedArray;

}

let modifiedArray = JSON.stringify(ModifyData("E001", "United States"), null, 4);

$("[ id$='H_Ins").val(modifiedArray);

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多