我正在尝试将$.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="
答案 0 :(得分: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
我建议的另一件事是尝试解析整个查询字符串$_SERVER['QUERY_STRING']