0

给定下表...我正在获取每个单元格的值并附加到数据数组...

    <table id="ProductTable" width="1200">
        <thead>...</thead>
        <tbody>
        <tr>
            <td>SLOTP10</td>
            <td>Some Description</td>
            <td>Some Qty</td>
            <td>Some Price</td>
            <td>Some Extended Total</td>
        </tr>
        </tbody>
        <tfoot>...</tfoot>
    </table>

// FORM ELEMENTS ARE NOT SHOWN BUT THIS IS VALID
var data = $("#wbmasonorder").serializeArray(); 
var key = -1;
var products = [];      

$('#ProductTable tbody tr td').each(function(index,element) {
    if (index % 5 == 0) {
        key++;
        products[key]=[];
    }
    products[key].push($(this).html());
});
data.push({
    name: 'products',
    value: products
});
console.log(data);

$.post(url,data);

当我记录数据时,节点的值在控制台中显示为数组,但是当我发布它时,$_POST['products'] 的值是逗号分隔的字符串......不是数组

4

3 回答 3

0

您正在序列化 js 数组,它基本上将数组转换为字符串。一旦在 php.ini 中收到,您需要将字符串反序列化回数组。

您可能想查看 JSON 数组/字符串。

于 2013-11-04T20:46:39.043 回答
0

PHP 约定是[]在客户端端使用 POST 变量命名,如果它们被视为数组 server-side。尝试对您的 JavaScript 进行以下更改:

data.push({
    name: 'products[]',
    value: products
});
于 2013-11-04T20:44:30.343 回答
0

我将帖子从仅发布数据数组更改为分别发布包含数据数组和产品的对象

例子...

$.post(url, {data: data, products: products });

代替...

$.post(url, data);

现在工作正常,我不确定为什么它在附加到数据数组时未能保留数组形式,但它的工作原理是这样的。

感谢大家的帮助

于 2013-11-04T21:06:37.303 回答