js里面的对象ajax post到php端直接变成数组了?
本帖最后由 zhoumengkang 于 2013-09-12 10:03:14 编辑
事先引入了jquery
var str ="{'a':'b','aa':'bb'}";<br />var str2 = eval('('+str+')');<br />var type = typeof(str2);<br />console.log(str);<br />console.log(type);//object<br />console.log(str2);<br />$.post('./bb.php',{'data':str2});
bb.php的代码
$data = $_POST['data'];<br />var_dump($data);
控制台上看返回结果,直接输出为数组了
array(2) {<br /> ["a"]=><br /> string(1) "b"<br /> ["aa"]=><br /> string(2) "bb"<br />}
我一般都是在php端需要json_decode()处理的,这样,不需要解析json格式,直接拿到的是数组了。
虽然一直知道js里对象就类似于php的关联数组,也不明白,这是什么原理呢(js里面的对象ajax post到php端直接变成数组了?)。
分享到:
——解决方案——————–
is 在执行 $.post 用 Serialize 方法将 {‘data’:{‘a’:’b’,’aa’:’bb’}}
转成了 data[a]=b&data[aa]=bb 发送到 php
php 收到 data[a]=b&data[aa]=bb 后,调用 parse_str 函数,将其转换为
array (<br /> 'data' => <br /> array (<br /> 'a' => 'b',<br /> 'aa' => 'bb',<br /> ),<br />)
赋值给 $_POST 数组
——解决方案——————–
var str2 = eval(‘(‘+str+’
本&文来源gaodai^.ma#com搞#代!码网
搞gaodaima代码)’);这句,确实直接把json转换成了js对象了。
但是,$.post你确定能够发送对象到php上?即使你发送一个数组上去,他也会把数组拆成一个一个的参数发送上去的。
他先把你的对象搞成数组,然后再把数组搞成一个一个参数,然后在php那边一个个参数又合并成一个数组。其实跟你通常看到的get方式参数串差不多,也没听说过get还能get出来一个对象。
纯臆断,欢迎拍砖。
搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:js里边的对象ajax post到php端直接变成数组了
转载请注明原文链接:js里边的对象ajax post到php端直接变成数组了
