使用jQuery序列化DIV属性并发送到AJAX POST

时间:2012-11-15 03:31:09

标签: javascript jquery ajax serialization

我知道序列化适用于<FORM>,但它也可以用于DIV吗?

<div class="row" shortname="1"></div>
<div class="row" shortname="2"></div>
<div class="row" shortname="3"></div>
<div class="row" shortname="4"></div>

如何获取所有DIV及其短名称属性并将所有内容传递给AJAX帖子?

喜欢短名称= 1&amp; shortname = 2&amp; shortname = 3

谢谢!

4 个答案:

答案 0 :(得分:2)

你可以创建一个数组并将其作为JSON传递,

 var data=new Array();
    $('div.row').each(function(){
      data.push($(this).attr('shortname'))
    })
   var jsonString=JSON.stringify(data);

答案 1 :(得分:1)

不,它无法使用div,所以你必须创建一个解决方案。如果我可以假设这些div包含在父div中,则此代码将起作用

var queryString = '';
var x = 0;
$('#parentdiv div').each(function(){
    if(x) queryString += '&';
    else x = 1;
    queryString += 'shortname[]=' + $(this).attr("shortname");
});

如果它们没有包含在div中,并且您想要找到所有具有shortname属性的div,请将循环更改为此。

$('div').find('[shortname]').each(function(){
    // same stuff
});

注意:我想你想要短名称是一个数组。如果你构造没有括号,你可能会一遍又一遍地覆盖“短名称”的值。

答案 2 :(得分:1)

您可以使用值构建数组,并将该数组作为对象的一部分传递给$ .ajax数据选项。

var shortnames = $('[shortname]').map(function(){
    return $(this).attr('shortname');
}).get();
ajax({
    ....
    data:{shortname:shortnames},
    ....
});

答案 3 :(得分:0)

你可以这样做......

FIDDLE

var serialized = '';

$('#serializeme div').each(function(){

    serialized = serialized + 'shortname=' + $(this).attr('shortname') + '&';

 });