0

我有文本框数组

<input type="text" name="txt[]" id"txt[]" value="test 1" />
<input type="text" name="txt[]" id"txt[]" value="test 2" />
<input type="text" name="txt[]" id"txt[]" value="test 3" />

并想使用 jquery 将此数组发布到 php 文件:

$('#submit').click(function() {

        $.ajax({
            type : 'POST',
            url : '<?php echo site_url('projects/create'); ?>',
            data: {
               txt: $('#txt').val()
            },
            success:function (data) {
                $("#log_msg").html(data);
            }          
        });
    });

但它返回undefined

4

4 回答 4

2

写吧

 <input type="text" name="pro_video[]" id="pro_video" />

$('#submit').click(function() {

var videos = $('input[name^=pro_video]');
        var postData = {
            vdo: [], // the videos is an array
        };
        $.each(videos, function(index, el) {
            // push the value in the vdo array
            postData.vdo.push($(el).val());
        });

        $.ajax({
            type : 'POST',
            url : '<?php echo site_url('projects/create'); ?>',
            data: {
               pro_video : postData
            },
            success:function (data) {
                $("#log_msg").html(data);
            }          
        });
    });
于 2012-05-27T16:11:25.340 回答
0

您可以使用 jQuery serialzie() 从 html 表单中获取表单值。

例如 :

<form id="testForm" method="post">
    <input type="text" name="txt[]" id"txt[]" value="test 1" />
    <input type="text" name="txt[]" id"txt[]" value="test 2" />
    <input type="text" name="txt[]" id"txt[]" value="test 3" />
</form

并使用 jQuery 从表单中获取值。

$('#testForm').serialize();
于 2012-05-27T15:31:17.247 回答
0

jQuery $(form).serialize() 函数将在这里为您提供帮助!

$('#submit').click(function() {

        $.ajax({
            type : 'POST',
            url : '<?php echo site_url('projects/create'); ?>',
            data: $('#testForm').serialize(),
            success:function (data) {
                $("#log_msg").html(data);
            },
            error: function(x,t,e){
                $("#log_msg").html('An error occured: '+e);
            }
        });
    });

您将在文件中获得一个 $_POST 漂亮而干净的数组(无论 site_url('projects/create') 指向何处)。警告认为,如果您向该表单添加输入提交,则 serialize() 还将发布提交值,因此如果您打算将数组直接插入数据库,则必须将其从 POST 数组中删除。反正。;)

玩得开心 !PS: id"txt[]" 对我来说似乎不是正确的标记......!id="txt_1"。您的文档中只能有一个参考 ID,我认为您不能在标记 iding 上使用括号。(如果我错了,有人纠正我..)

于 2012-05-27T15:41:16.040 回答
0

要将数组从 JavaScript 传递到 PHP,您可以使用 JQuery 中的序列化函数。您可以将其传递给整个表单或某些选定的表单元素。对于您提供的示例,它将如下所示:

的HTML:

<input type="text" name="txt[]" class="txt" value="test 1" />
<input type="text" name="txt[]" class="txt" value="test 2" />
<input type="text" name="txt[]" class="txt" value="test 3" />

和 Javascript:

$('#submit').click(function() {

    $.ajax({
        type : 'POST',
        url : '<?php echo site_url('projects/create'); ?>',
        data: {
           txt: $('.txt').serialize()
        },
        success:function (data) {
            $("#log_msg").html(data);
        }          
    });
});

这将为您的 php 提供字符串“txt%5B%5D=test+1&txt%5B%5D=test+2&txt%5B%5D=test+3”,它可以将其解释为这些值的数组。

请注意,我使用了 class 而不是 id,因为每个元素的 id 应该是唯一的。

于 2012-05-27T15:55:41.387 回答