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

Javascript 将键值推送到json对象并在ajax请求中传递,javascript,json,ajax,Javascript,Json,Ajax,我有一个使用ajax和香草javascript提交的表单,如下所示。我试图实现的是将所有选择的值保存到项中,这很好 现在我需要将这些值及其键推送到对象obj,该对象将创建如下对象,并在我的xhttp.send()中传递它 JS代码 saveUserSetting.addEventListener('click', function () { var links = document.querySelectorAll('.main-c

我有一个使用ajax和香草javascript提交的表单,如下所示。我试图实现的是将所有选择的值保存到项中,这很好

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

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");
        });
saveUserSetting.addEventListener('click',函数(){
var links=document.querySelectorAll('.main content.dropdown>a');

对于(var i=0;i如果我正确阅读了您的问题,您可以生成数组:

['English', 'USA', 'Production']
然后,获得所需结果的一种方法是将
for
循环替换为以下内容:

var labels = ['language', 'location', 'function']
var obj = links.reduce((output, item, index) => {
  output[labels[index]] = item
}, {})
这只是使用
reduce
执行带有标签的数组到对象的转换

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