简单情况下,通常我们用$.post()
发送的是一串由键值对序列化的字符串,或者发送的是一个JS对象(或一个JSON),而今天,我遇到一个情况是需要发送JSON数组,测试了一下,方法如下:
JS端
// 组装一个JSON数组
var postModel = [];
postModel.push({a:1,b:2});
postModel.push({c:3,d:4});
// 发送的是一个对象,对象的值先转换为字符串
$.post('url...', {works: JSON.stringify(postModel)}, function (data) {
alert('ok');
});
按照上面方法,PHP端会收到一个works,值是一长串字符串。
PHP端(用ThinkPHP框架前提下)
$works = json_decode(htmlspecialchars_decode($this->_post('works')), true);
要点1:用htmlspecialchars_decode()
。因为works字符串内的双引号都是实体,也就是"
,而json_decode()
并不会自动反转义,所以用htmlspecialchars_decode()
反转义。
要点2:json_decode()
的参数true
不要忘记。
网友评论