我需要通过AJAX数据发送如下:
<tr>
<td><input type="textbox" value="12" name="delay[256]"></td>
<td><input type="checkbox" value="256" name="attach_to[]"></td>
</tr>
<tr>
<td><input type="textbox" value="7" name="delay[653]"></td>
<td><input type="checkbox" value="653" name="attach_to[]"></td>
</tr>
哪种编码这两种输入的最佳方法是什么?
$.post(
window.location.href,
{
data_ajax: 1,
attach_to : attach_to, // how encode?
delay: delay // how encode?
},
function(array) {
},
'json'
);
OBS:我只想发送这些数据而不是整个表单。所以.serialize()
似乎不够。
答案 0 :(得分:0)
请参阅此答案,了解如何将数据编码为JSON:Encoding Javascript Object to Json string
然后使用PHP将已发布的JSON变量读回数组:http://php.net/manual/en/function.json-decode.php
答案 1 :(得分:0)
我的解决方案:
js code:serialize()
适用于整个表单或给定元素。
var attach_to = $("input[name='attach_to[]']").serialize();
var delay = $("input[name^='delay[']").serialize();
$.post(
window.location.href,
{
attach_to : attach_to,
delay: delay
},
function(array) {
// ...
},
'json'
);
php代码:parse_str
是轻松解码传入变量的关键。
parse_str($_REQUEST['delay'], $params);
$delay = $params['delay'];
parse_str($_REQUEST['attach_to'], $params);
$attach_to = $params['attach_to'];