jquery:在ajax中传递一个数组

时间:2013-09-02 14:44:18

标签: php javascript jquery ajax

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

<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 个答案:

答案 0 :(得分: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"];

这里qte一个数组

答案 1 :(得分:2)

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

$("#qte");

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

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

请记住,您按ID要求DOM对象,这个定义只返回一个。

答案 2 :(得分:2)

请阅读此主题: JQuery - Reading an array of form values and displaying it?

简而言之,您应该使用标记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请求,无论如何都会传输这些输入中的所有数据。您只需要在服务器端正确处理它们。

答案 3 :(得分:1)

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

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