使用 jquery 将字段数组发布到 php


Post array of fields to php using jquery

我有文本框数组

<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

只要写

 <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);
            }          
        });
    });

您可以使用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();

要将数组从 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",它可以解释为这些值的数组。

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

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,我认为您不能在标记 ID 上使用括号。(如果我错了,有人纠正我。