Javascript 为AJAX调用准备Vuex存储数据的正确方法
我有一个Vuex存储,它包含大约30个字段,在过去的两天里,我一直在试图找出如何在将其传递到AJAX post方法之前正确地收集它。我知道Vuex属性是反应性的,这可能会导致问题。我一直在运行测试以使这个该死的东西正确地填充我的Asp.Net控制器,下面是我的发现 下面的日志显示了AJAX调用前后的情况 我的硬编码对象工作正常,但这只是出于测试目的: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 } 我
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'])