我有一个包含约30个字段和过去两天的Vuex存储我一直在试图弄清楚如何在将它传递到AJAX之前正确收集它post方法。我知道Vuex属性是被动的,这可能会导致问题。我一直在运行测试来获得这个dang的东西来正确地填充我的Asp.Net控制器,这就是我发现的。准备Vuex存储数据的正确方法为AJAX调用
下面的日志显示AJAX调用之前和之后。
我硬编码对象工作得很好,但这只是为了测试目的:
var obj = {
'essay': 'hardcoded nonsense is nonsense',
'age': 28
}
我的下一个尝试是直接传递store.state
作为数据对象,但是这也传递了很多不需要的材料,并没有按不适用于较大的物体。
然后我试图将其转换为JSON,希望它会删除所有的垃圾我不需要(idea come from here)
var jsonData = JSON.parse(JSON.stringify(store.state))
一个朋友建议我用_lodash
去除所有多余的东西,但它只是结束了空当它击中了我的.Net控制器(idea came from here)
var lodashData = _.omitBy(store.state, _.isNil)
即使所有的结果甲肝成功注销,只有前两个实际将任何数据传递给我的控制器。
什么是正确的方式去做这样的事情?
var jsonData = JSON.parse(JSON.stringify(store.state))
var lodashData = _.omitBy(store.state, _.isNil)
export default {
name: 'demo-submit',
methods: {
submit() {
console.log('hardcoded object', obj)
$.post('/Contest/UploadInfo', obj)
.done(function (response, status, jqxhr) {
console.log('success: hardcoded obj', obj)
})
.fail(function(jqxhr, status, error) {
console.log('error: hardcoded')
});
console.log('store.state', store.state)
$.post('/Contest/UploadInfo', store.state)
.done(function (response, status, jqxhr) {
console.log('success: store.state', store.state)
})
.fail(function(jqxhr, status, error) {
console.log('error: store.state')
});
console.log('jsonData', jsonData)
$.post('/Contest/UploadInfo', jsonData)
.done(function (response, status, jqxhr) {
console.log('success: jsonData', jsonData)
})
.fail(function(jqxhr, status, error) {
console.log('error: jsonData')
});
console.log('lodashData', _.omitBy(store.state, _.isNil))
$.post('/Contest/UploadInfo', lodashData)
.done(function (response, status, jqxhr) {
console.log('success: lodashData', lodashData)
})
.fail(function(jqxhr, status, error) {
console.log('error: lodashData')
});
}
}
}