无法将序列化表单数据从ajax请求解析为php数组

问题描述 投票:0回答:1

我试图解析从$.pjax请求发送到php数组的数据。我尝试使用parse_str,但NULL被退回。与unserialize()一起,结果是:unserialize(): Error at offset 0 of 210 bytes这样做的正确方法是什么?我的代码如下:

function loadNewProducts() {
    $.pjax.defaults.timeout = false
    $.pjax({
        url: location.href.split('?')[0],
        data: {
            form: $("#dynamic-form-new-products").serialize()
        },
        container: "#new_products"
    })
}

$_GET['form']参数如下所示:

string(210) "_csrf-backend=BaUAnGywhydYkWrYU6tBNwyju5ofhIwAw0AO60naP4NP_DHzCIbzHhPnL5Ef7wZSXtXZ2F72uzmkbT6gBZFo1g%3D%3D&NewProduct%5B0%5D%5Bproduct_id%5D=2&NewProduct%5B0%5D%5Bstart_date%5D=&NewProduct%5B0%5D%5Bend_date%5D="
php ajax pjax
1个回答
1
投票

如果您没有使用$ output参数,那么您可能会看到此问题,因为前导下划线不能作为PHP变量标识符的开头有效。如果没有$ output,这将导致一个名为$_csrf-backend的变量,这是不允许的。我自己无法测试,但建议在PHP.net上使用以下用法:

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

Example Source

我建议的另一件事是尝试解析整个查询字符串$_SERVER['QUERY_STRING']

© www.soinside.com 2019 - 2024. All rights reserved.