如何将Array传递给JQuery Ajax Post?

时间:2014-02-22 05:22:47

标签: php ajax arrays post input

我有以下表格

<input type="text" class="attr_values[]" value="1" /> <input type="text" class="attr_values[]" value="2" />

我试图传递“attr_values”数组中的所有值,以便可以通过Ajax发布,但以下内容不起作用。

$.ajax({   
   url: 'index.php',
   type: 'POST',
   data:{ 
      attr_values: $('.attr_values').val()

如何做到这一点?

4 个答案:

答案 0 :(得分:0)

使用

var = $( '#your_form_id_or_class' ).serialize() ;

and assign this to **attr_values** 

参考:https://api.jquery.com/serialize/

答案 1 :(得分:0)

您必须使用通配符选择器:

$('input[name^="attr_values"]').serialize();

上面的选择器会找到每个<input>名称以attr_values开头的人,并为您序列化,所以你只需这样做:

data: $('input[name^="attr_values"]').serialize(),

答案 2 :(得分:0)

您的输入元素类名称

可能不需要[]
<input type="text" class="attr_values" value="1" />
<input type="text" class="attr_values" value="2" />

您不需要使用serialize jQuery API

如果值传递给jQuery.ajaxdata参数是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值。

var attrValueArray = $("input.attr_values").map(function(){
  return this.value;
}).get();

$.ajax({   
   url: 'index.php',
   type: 'POST',
   data:{ 
      attr_values: attrValueArray

答案 3 :(得分:0)

首先,您必须为所有输入元素设置name属性,并从class属性中删除[],这绝对是错误的类使用:

<input type="text" name="attr_values[]" class="attr_values" value="1" />
<input type="text" name="attr_values[]" class="attr_values" value="2" />

然后,使用jQuery将输入值序列化为:

var __data = $('input[name^="attr_values"]').serialize();
// Or if input has parent form
var __data = $('#form-id').serialize();

$.ajax({
    url: 'index.php',
    type: 'POST',
    data: __data