数组的jQuery帖子到PHP在服务器端返回一个字符串.为什么


jQuery post of array to PHP returns a string on server side... why?

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

    <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'] 的值是一个逗号分隔的字符串......不是数组

PHP约定是在终端客户端用[]命名POSTed变量,如果它们要被视为服务器端的数组。尝试对 JavaScript 进行以下更改:

data.push({
    name: 'products[]',
    value: products
});

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

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

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

例。。。

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

而不是。。。

$.post(url, data);

现在工作正常,我不确定为什么它在附加到数据数组时无法保留数组形式,但它的工作所以情况结束了。

感谢大家的帮助