jquery循环和帖子不能一起工作

时间:2014-07-11 10:14:20

标签: jquery ajax

我一直试图让这个工作几个小时。

我试图用.textinputclass获取每个输入,将它们组合在一起并通过ajax将它放入数据库。

两个铃声分开工作,我可以得到每个输入并将它们放在我想要的格式中。

我可以使用.post将数据发送到php脚本以将其放入数据库

$(".addSubmit").click(function(){

        $('.textinputclass').each(function(){

            var textData = $(this).val();
            var thisLanguage = $(this).attr('id');
            var textData = '[:' + thisLanguage + ']' + textData;

            languagearray.push(textData);
        }); 

        var nameData = 'test1111';

        var textData = languagearray.join('');
        var languagearray = [];


        var data = {
            'name' : nameData,
            'text' : textData
        };

        $.post('../wp-content/plugins/qtranslate-hardcodedtext/additem.php', data, function() {
            alert('done!');
        });
    });

如果我删除.each函数并将文本放在数据数组中,那么.post就可以了。

2 个答案:

答案 0 :(得分:2)

我认为你必须创建一个数组languagearrayhttp://jsfiddle.net/FFr5z/

编辑:

var languagearray = [];
$('.textinputclass').each(function(){
    var textData = $(this).val();
    var thisLanguage = $(this).attr('id');
    var textData = '[:' + thisLanguage + ']' + textData;
    languagearray.push(textData);
}); 

答案 1 :(得分:1)

您的问题是languagearray的定义。

虽然你已经正确地声明了它,但.each循环之后

最终结果是languagearray声明(但不是初始化)被“提升”到函数的顶部,使其可用在整个范围内,但其初始值仅为undefined而不是[]

由于变量未定义,因此无法在其上调用push,这在浏览器的JS控制台中应该很明显。