1

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

4

2 回答 2

0

请参阅此答案以了解如何将数据编码为 JSON:Encoding Javascript Object to Json string

然后使用 PHP 将发布的 JSON 变量读回数组:http: //php.net/manual/en/function.json-decode.php

于 2012-07-02T20:24:57.637 回答
0

我的解决方案:

Node.js 代码: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'];
于 2012-07-03T13:25:48.717 回答