1

如果选中了一个复选框,我想从每 2 行中取出所有元素,并将它们放在一个 json 数组中,然后使用 ajax 将其发送到 php.ini。

$('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'
}

如果有人可以提供帮助,我将不胜感激。谢谢大家帮助有需要的人。

4

3 回答 3

2

你也可以这样使用,

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

    付款[payID] = payJsonArr;`

如果你想了解更多关于 JSON 的信息,那么你可以在这里看到一些很好的例子:JSON

于 2012-10-11T18:13:31.683 回答
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;
}

});

于 2012-10-11T16:53:32.980 回答
0

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

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

           };

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

于 2012-10-11T16:08:58.307 回答