使用元素名称和值创建一个json数组,并使用ajax将其提供给php

时间:2012-10-11 16:00:25

标签: php jquery ajax json

如果选中了一个复选框,我想从每两行中获取所有元素,并将它们放在json数组中,并将其与ajax一起发送到php。

$('input.pay').each(function(){
    if($(this).is(':checked'))
    {
        row = $(this).parents('tr').attr('id').split('_');
        type = row[0];
        payID= row[1];
        payJsonArr = '';
        secondRow=', #'+type+'_'+payID+$('#rate_'+payID).attr('class');

        $('#'+type+'_'+payID+secondRow).find('.take').each(function(){
            if($(this).is('input') || $(this).is('select'))
                payJsonArr += $(this).attr('name') + ':' + $(this).val()+',';   
            else if($(this).is('td') || $(this).is('span'))
                payJsonArr += $(this).attr('name') +':'+ $(this).html().trim()+',';
        });
        payJsonArr += payJsonArr.substring(0, payJsonArr.length - 1);
        payments[payID]= '{'+payJsonArr+'}';
    }
});

问题是,使用该代码我在php中得到数组我得到了休息:

array(1) {
  [791]=>
  string(501) "{field 1:2012-10-07,field 2:6777.00 }"
}

如果它是JSON,我怎么能得到它,就像那样:

array(1) {
  [791]=>
    [field 1]=>'2012-10-07',
    [field 2]=>'6777.00'
}

如果有人能提供帮助我会很感激。谢谢大家帮助那些有需要的人。

3 个答案:

答案 0 :(得分:2)

你也可以这样使用,

    `var payJsonArr = [];
    $('#'+type+'_'+payID+secondRow).find('.take').each(function(){
        if($(this).is('input') || $(this).is('select'))
            payJsonArr[$(this).attr('name')] = $(this).val();   
        else if($(this).is('td') || $(this).is('span'))
            payJsonArr[$(this).attr('name')] = $(this).html().trim(); 
    });

    payments[payID]= payJsonArr;`

如果您想了解有关JSON的更多信息,那么您可以看到 这里有一些不错的例子:JSON

答案 1 :(得分:1)

根据Rohit的建议,试试这个(这是未经测试的):

$('input.pay').each(function(){
if($(this).is(':checked'))
{
    row = $(this).parents('tr').attr('id').split('_');
    type = row[0];
    payID= row[1];
    payJsonArr = {};
    secondRow=', #'+type+'_'+payID+$('#rate_'+payID).attr('class');

    $('#'+type+'_'+payID+secondRow).find('.take').each(function(){
        if($(this).is('input') || $(this).is('select'))
            payJsonArr[$(this).attr('name')] = $(this).val();   
        else if($(this).is('td') || $(this).is('span'))
            payJsonArr[$(this).attr('name')] = $(this).html().trim();
    });
    payments[payID]= payJsonArr;
}

});

答案 2 :(得分:0)

您应该尝试创建一个可以转换为JSON的字符串。为此创建字符串,例如:

var jsonString= {
             "field1":"value",
             "field2":"value" 

           };

如果您使用双引号然后只使用双引号,请务必记住,如果使用单引号,则始终使用单引号。