-1
function dadosFormularios() {
    var dadosFormulario = {};
    var iterador = countForms;
    var i = 0;
    while (i < iterador) {
        dadosFormulario[i] = {};
        dadosFormulario[i]['a'] = $('#field\\[' + i + '\\]\\[a\\]').val();
        dadosFormulario[i]['b'] = $('#field\\[' + i + '\\]\\[b\\]').val();
        //alert(dadosFormulario[i]['a']);
        //alert(dadosFormulario[i]['b']);   
        i++;
    }
    var qstring = '';
    var tmp_qstring = [];
    var temp1, temp2;
    var aux_i = i + 1;
    alert(aux_i);
    for (var j = 0; j < aux_i; j++) {
        temp1 = dadosFormulario[j]['a'];
        alert(temp1);
        temp2 = dadosFormulario[j]['b'];
        //alert(temp1);
        tmp_qstring[j] = 'a' + j + '=' + temp1 + '&' + 'b' + j + '=' + temp2;
    }
    qstring = tmp_qstring.join('&');
    alert(qstring);
    window.location = 'dup1.php?' + qstring;
}

当我点击一个按钮时,我调用了上面的函数,现在我正试图将对象数组的数据发送到另一个页面,正如您在代码中看到的那样。

我的问题是,当我设置dadosFormulario[j]['a'];dadosFormulario[j]['b'];设置为 var 或直接在tmp_qstringie中设置它们时,我遇到了麻烦tmp_qstring[j]=dadosFormulario[j]['b'];。在 chrome 控制台中,我收到错误:

未捕获的类型错误:无法读取未定义的属性“a”

4

1 回答 1

4

修复您的循环以使用:

j < i

因为您的数组和迭代器变量j都是从零开始的。i当您的迭代器达到数组长度 - 1 (在您的情况下是长度)时,您必须停止迭代。这通常是for数组长度上的循环的情况。

如果您迭代直到j <= i您的迭代索引将超出数组的末端边界。

于 2012-07-13T14:13:51.087 回答