将键值推送到json对象并在ajax请求中传递它

时间:2017-05-25 10:00:12

标签: javascript json ajax

我使用ajax和vanilla javascript进行表单提交,如下所示。我想要实现的是将所有选定的值保存到 项目 ,这是正常的。

现在我需要将这些值用键推送到对象 obj ,这将创建如下对象并将其传递给我的xhttp.send();

var obj={"language":"English";
         "location":"USA";
         "function":"production"
        }

JS代码

        saveUserSetting.addEventListener('click', function () {            
            var links = document.querySelectorAll('.main-content .dropdown > a');
            for (var i = 0; i <= links.length; i++) {
                var obj = {};
                var items = links[i].textContent;
                console.log(items); // Items will have the values now English, USA, Production. i want to push this values to
            }
            var xhttp = new XMLHttpRequest();
            xhttp.open("POST", "data.json", true);
            xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    // response
                }
            };
            xhttp.send("location=USA&langugage=English&function=production");
        });

我正在使用普通的javascript。没有jquery或任何其他框架。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果我正确阅读了您的问题,您就可以生成数组:

['English', 'USA', 'Production']

然后,获得所需结果的一种方法是用此替换for循环:

var labels = ['language', 'location', 'function']
var obj = links.reduce((output, item, index) => {
  output[labels[index]] = item
}, {})

这只是使用reduce来执行使用标签进行对象转换的数组。