创建一个包含元素名称和值的json数组,并使用ajax将其提供给php
如果选中复选框,我想从每两行中提取所有元素,并将它们放入json数组中,然后使用ajax将其发送到php创建一个包含元素名称和值的json数组,并使用ajax将其提供给php,php,jquery,ajax,json,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 = ''
$('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'
}
如果有人能帮助我,我将不胜感激。谢谢你们所有人帮助那些需要帮助的人。你们应该尝试创建一个可以转换为JSON的字符串。为此,创建字符串,例如:
var jsonString= {
"field1":"value",
"field2":"value"
};
请始终记住,如果使用双引号,然后仅使用双引号,如果使用单引号,则始终使用单引号。根据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;
}
}) 你也可以这样使用 `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数组这样的东西。还有json字符串,其中包含javascript数据结构的文本表示。您不需要构建json数组。构建JS数据结构,然后将其转换为json,这是将json字符串发送到其他地方之前的最后一步。看起来您是在双重编码:构建您自己的无效/损坏的json字符串,jquery对其进行重新json编码。json是无效的,因为缺少引号。实际上,所有内容都可以解释为一个数组。特别是一个字符串。例如$string='abc',您可以得到类似于$string的'c'。[2]。感谢您毫无意义的澄清。我完全了解JSON是什么。只有最后一部分可以完成这项工作:JSON由于缺少引号而无效。这正是我希望通过2个小修补程序实现的效果。如果var payments=[];var payJsonArr=[];但是,如果您将它们定义为obejcts:var payments={};var payJsonArr={};谢谢你们给我的好建议。我很感激。哈哈,早该看看你们的帖子了:定义像object{}这样的数组正是上面帖子所缺少的。谢谢你们。你们帮了我很多:@lachezaraychev没问题。如果这是您需要的,请将此标记为正确答案: