我创建了一个隐藏的表单,并尝试在ajax成功时添加其他输入字段,然后尝试提交此表单。但是,将数组追加到字段中并不合适。
success : function(resp) {
$('#checkout').append('<input type="text" name="subtotal" value="'+resp.data.subTotal+'" />');
$('#checkout').append('<input type="text" name="tax" value="'+resp.data.tax+'" />');
$('#checkout').append('<input type="text" name="times" value="'+resp.data.times+'" />');
}
这样做,输入字段时间变得像
<input type="text" name="times" value="[{"start_date":"2019-06-10","end_date":"2019-06-10","start_time":"08:00:00","end_time":"09:00:00"},{"start_date":"2019-06-11","end_date":"2019-06-11","start_time":"08:00:00","end_time":"09:00:00"},{"start_date":"2019-06-12","end_date":"2019-06-12","start_time":"08:00:00","end_time":"09:00:00"}]"
响应看起来像
{"status":"200","data":{"times":[{"start_date":"2019-06-10","end_date":"2019-06-10","start_time":"08:00:00","end_time":"09:00:00"},{"start_date":"2019-06-11","end_date":"2019-06-11","start_time":"08:00:00","end_time":"09:00:00"},{"start_date":"2019-06-12","end_date":"2019-06-12","start_time":"08:00:00","end_time":"09:00:00"}],"subTotal":300,"tax":24}}
当我提交此表单时,它不是发送时间值。
print_r($ _ POST)
Array
(
[_token] => x8THCiWyxRXnb9T3mKI3ae8XzfKwHicW1SbwBGXS
[subtotal] => 300
[tax] => 24
[times] => [{
)
我想以这种方式将那些时间值发送到服务器。
答案 0 :(得分:2)
成功响应中的内容将JSON数据字符串化:
success : function(resp) {
let times=JSON.stringify(resp.data.times);
$('#checkout').append('<input type="text" name="times" value="'+times+'" />');
}
并在服务器端解码:
$posted_data = json_decode($_POST['times'], true);
答案 1 :(得分:1)
输入元素的值只能是字符串,因此您需要首先序列化对象,例如转换成JSON:
$('#checkout')
.append('<input type="text" name="times" value="'
+ JSON.stringify(resp.data.times)
+ '" />');
答案 2 :(得分:1)
您必须将json字符串放在单引号fiddle
中$('#checkout').append('<input type="text" id="times" name="times" value=\'' + JSON.stringify(resp.data.times) + '\' />');