Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为AJAX调用准备Vuex存储数据的正确方法_Javascript_Json_Ajax_Vue.js_Vuex - Fatal编程技术网

Javascript 为AJAX调用准备Vuex存储数据的正确方法

Javascript 为AJAX调用准备Vuex存储数据的正确方法,javascript,json,ajax,vue.js,vuex,Javascript,Json,Ajax,Vue.js,Vuex,我有一个Vuex存储,它包含大约30个字段,在过去的两天里,我一直在试图找出如何在将其传递到AJAX post方法之前正确地收集它。我知道Vuex属性是反应性的,这可能会导致问题。我一直在运行测试以使这个该死的东西正确地填充我的Asp.Net控制器,下面是我的发现 下面的日志显示了AJAX调用前后的情况 我的硬编码对象工作正常,但这只是出于测试目的: var obj = { 'essay': 'hardcoded nonsense is nonsense', 'age': 28 } 我

我有一个Vuex存储,它包含大约30个字段,在过去的两天里,我一直在试图找出如何在将其传递到AJAX post方法之前正确地收集它。我知道Vuex属性是反应性的,这可能会导致问题。我一直在运行测试以使这个该死的东西正确地填充我的Asp.Net控制器,下面是我的发现

下面的日志显示了AJAX调用前后的情况

我的硬编码对象工作正常,但这只是出于测试目的:

var obj = {
  'essay': 'hardcoded nonsense is nonsense',
  'age': 28
}
我的下一个尝试是直接将store.state作为数据对象传递,但这也传递了大量不需要的材料,对较大的对象不起作用

然后我尝试将其转换为JSON,希望它能删除所有我不需要的垃圾()

var jsonData=JSON.parse(JSON.stringify(store.state))

一位朋友建议我使用
\u lodash
删除所有多余的内容,但一旦它击中我的.Net控制器()

var lodashData=..omitBy(store.state,..isNil)

尽管所有结果都已成功注销,但实际上只有前两个结果向我的控制器传递了任何数据

这样做的正确方式是什么?


JSON.parse
JSON.stringify
应该可以工作。你的州结构正确吗?请提供您的州代码

如果出于某种原因(不确定)它不起作用,对于简单的情况,我认为您可以这样做:

const payload = {
  age: store.state.age,
  essay: store.state.essay
}
如果有很多字段,请为其编写一个函数:

const toPlainObject = (state, keys) => {
  const obj = {}
  keys.forEach(key => {
    obj[key] = state[key]
  })
  return obj
}

const payload = toPlainObject(store.state, ['age', 'essay'])
如果您不想指定字段,只需为..使用
。。在
中迭代整个状态

const toPlainObject = (state, keys) => {
  const obj = {}
  keys.forEach(key => {
    obj[key] = state[key]
  })
  return obj
}

const payload = toPlainObject(store.state, ['age', 'essay'])