今天在写一个购物车的发票功能,由于每个商家都需要有一个发票抬头,因此我用表单来标记

其中k代表的是店铺id,然后通过ajax把该数组发送到PHP后台去处理,最初我的JS是这样写的:

var data = {};

var invoice_name = $("input[name=invoice_name]");

data.invoice_name = invoice_name;

$.ajax({

type:'post',

url:ApiUrl+'/index.php?act=member_buy&op=buy_step2',

data:data,

dataType:'json',

success:function(result){

//返回处理

}

});

然后我在PHP进行打印老是为空,后面通过研究发现,如果有两个店铺id为1和2的店铺时,表单会变成:

经过高人指点后发现,jquery选择器有问题,$("input[name=invoice_name]")这个选择器表示name恰好为“invoice_name”的文本框,应该这样写:

$("input[name^=invoice_name]");

表示为所有name类似invoice_name的文本框,改好了之后发现PHP只能接收一个发票抬头的值,经过研究发现,默认这样传输只能传数组里第一个值过去,因此应该要在js中遍历invoice_name的值存为数组再发送,正确写法应该这样:

var data = {};

var invoice = [];

$("input[name^=invoice_name]").each(function(a_Idx, a_Elmt) { invoice.push(a_Elmt.value); });

data.invoice_name = invoice;

$.ajax({

type:'post',

url:ApiUrl+'/index.php?act=member_buy&op=buy_step2',

data:data,

dataType:'json',

success:function(result){

//返回处理

}

});

现在到了php端发现$_POST['invoice_name']已经是一个数组了,数据都已经传输过来了。

花费了两天研究这问题,百度之后发现这个问题提问挺少的,不敢独享,赶紧和大伙分享分享!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐