3

我有一个包含几个相同字段的表单:

<input type="text" id="qte" value="" name="qte[]">

如何在我的文件处理中传输数组?

我注意到发送 ajax 的数组变成了一个字符串。

$("#form_commande").submit(function(event){

var qte = $("#qte").val();

if(qte== '')
{
    $('#qte_message').html("KO QTE");
}
else
{
    $.ajax({
        type : "POST",
        url: $(this).attr('action'),
        data: $(this).serialize(),
        success : function(){
            $('#form_commande').html('<p>OK</p>');
        },
        error: function(){
            $('#form_commande').html("<p>KO</p>");
        }
    });
}
return false;

}

4

4 回答 4

3

在 jquery 中获取值,例如:

$("#form_commande").submit(function(event){

    var qte_array = new Array();
    $('input[name="qte[]"]').each(function(){
       qte_array.push($(this).val());
    });

    if(qte_array.length== 0)
    {
        $('#qte_message').html("KO QTE");
    } 
    else
    {
        $.ajax({
            type : "POST",
            url: $(this).attr('action'),
            data: {qte:qte_array},
            success : function(){
               $('#form_commande').html('<p>OK</p>');
            },
            error: function(){
                $('#form_commande').html("<p>KO</p>");
            }
        });
    }
});

并在 php 中获取它,例如:

$qte = $_POST["qte"];

这里是一个数组

于 2013-09-02T15:27:39.580 回答
2

这将返回输入文本框对象:

$("#qte");

这将返回输入文本框对象的值:

$("#qte").val();

请记住,您通过 id 请求 DOM 对象,根据定义,这仅返回一个。

于 2013-09-02T14:49:27.450 回答
2

请阅读本主题: JQuery - 读取表单值数组并显示它?

简而言之,您应该使用标签name="qte[]"而不是使用 id 进行迭代。在 DOM 中,您不能拥有两个具有不同 id 的不同对象。

var qte_array = new Array();
$('input[name="qte[]"]').each(function(){
   qte_array.push($(this).val());
});

在此之后,您将 qte[] 数组的所有值放在一个对象中 - qte_array。您可以稍后将此数组序列化为 JSON,然后将其作为字符串传递。

虽然- 你不应该做所有这些事情。您可以直接使用表单发送 ajax 请求,这些输入中的所有数据都将被传输。您只需要在服务器端正确处理它们。

于 2013-09-02T14:53:28.357 回答
1

id是唯一的,不能有多个具有相同 ID 的字段。

顺便说一句,您应该将值转换为 JSON 并将它们传递给 Ajax

于 2013-09-02T14:55:35.583 回答