如果选中了一个复选框,我想从每两行中获取所有元素,并将它们放在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'
}
如果有人能提供帮助我会很感激。谢谢大家帮助那些有需要的人。
答案 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"
};
如果您使用双引号然后只使用双引号,请务必记住,如果使用单引号,则始终使用单引号。