如何编码基于数组名称的输入通过AJAX传递?

时间:2012-07-02 19:26:30

标签: javascript ajax forms encode

我需要通过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()似乎不够。

2 个答案:

答案 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'];