我知道这个问题在这里已经得到了很多答案,但是这些解决方案对我来说不起作用,也许我正在做一些愚蠢的事情,但我不太明白我的代码到底出了什么问题。将临时数据保存在对象数组中然后使用ajax和php将其发送到数据库也很好吗?
我正在做一个多步骤表单,我需要在两个步骤之间保存数据。
从代码中你可以看到我尝试了不同的解决方案来清除对象,但没有一个工作。此外,当我检查长度时,它总是为0,这意味着对象是空的。我在这里缺少什么?
每次检查控制台日志时,之前的数据仍然存在(检查图像)。
我的代码
$(document).on('click', '.e-check', function(){
$('.e-check').text('check_box_outline_blank');
$('.e-check').removeClass('e-checked');
$(this).text('check_box');
$(this).addClass('e-checked');
var edata = '';
edata = {};
edata = undefined;
console.log(edata.length);
edata = {
'ename' : $(this).data('ename'),
'owner' : $(this).data('owner'),
'estart' : $(this).data('estart'),
'eid' : $(this).data('eid'),
'eat' : $(this).data('eat'),
'sec' : $(this).data('sec'),
'pid' : $(this).data('pid')
};
$(document).on('click','.e-next-1', function(){
console.log(edata);
});
});
答案 0 :(得分:2)
您有一个范围问题。您需要全局声明变量以变异变量。你可以这样做:
var edata = '';
$(document).on('click', '.e-check', function(){
$('.e-check').text('check_box_outline_blank');
$('.e-check').removeClass('e-checked');
$(this).text('check_box');
$(this).addClass('e-checked');
edata = {};
edata = undefined;
console.log(edata.length);
edata = {
'ename' : $(this).data('ename'),
'owner' : $(this).data('owner'),
'estart' : $(this).data('estart'),
'eid' : $(this).data('eid'),
'eat' : $(this).data('eat'),
'sec' : $(this).data('sec'),
'pid' : $(this).data('pid')
};
});
$(document).on('click','.e-next-1', function(){
console.log(edata);
});
注意var edate =''; part在click回调之外,因此可以全局访问