(1)今天在一个页面上添加一个ajax查询订单号是否存在的功能,操蛋的是在原页面上引用了一个js文件,并且该文件里面封装了一个原生的ajax方法,影响就是我是用jquery的ajax方法会被该方法拦截,然后返回失败结果,由于本人并非专业前端,所以并没有去刨根问底,只好按照框架封装的方法去发ajax请求了。
(2)使用该框架封装的方法后确实是可以用了,但是操蛋的是又一个操蛋的结果出来了,该ajax发送的数据都是使用双引号包裹的json字符串。
双引号包裹的字符串有什么问题吗?当然。php接受到数据之后,采用json_decode()无法解析。返回的值始终为null
。
查了一下原因,php不仅对json格式很严格,甚至对包裹json字符串的引号很严格。。。
正儿八经的格式应该是'{ "bar": "baz" }'
但是如果你使用"{ 'bar': 'baz' }"
就不行了,
使用"{ \"bar\": \"baz\" }"
也不行,
虽然这在js中是可行的。
综上,正确做法:
$str = "{\"name\": \"Bob\"}";//被双引号包裹的字符串
$str = stripslashes($str);//反引用一个引用字符串。
$obj = json_decode($str);//解析json字符串