场景:需要前端传关联数组给后端
尝试:常规写法不好使
解决:前端json序列化 对象数组 为 字符串 str,然后将此字符串 str 作为参数的值传给后端(比如 schools: str ),后端将收到的参数 先进行htmlspecialchars_decode ,然后json反序列化为对象数组
微信小程序js代码:test.js
testArrPost: function()
{
// 对象数组
var schollArr = [
{"name": "清华大学", "id": 1},
{"name": "北京大学", "id": 2}
];
// json序列化
var schoolStr = JSON.stringify(schollArr);
var postData = {
schools: schoolStr
}
wx.request({
url: 'https://xx.com/test',
data: postData,
method: 'POST',
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: function (res) {
console.log(res);
}
});
}
thinkphp后台接口代码:
public function test()
{
$inputSchools = I('schools');
$c1 = htmlspecialchars_decode( $inputSchools ); // 反解析html特殊字符
$schoolObj = json_decode( $c1 );//反序列化为对象数组
if ( empty( $schoolObj ) ) die('输入数组错误');
var_export( $schoolObj );
echo 'success';
}