本帖最后由 zhoumengkang 于 2013-09-12 10:03:14 编辑 事先引入了jquery

var str ="{'a':'b','aa':'bb'}";var str2 = eval('('+str+')');var type = typeof(str2);console.log(str);console.log(type);//objectconsole.log(str2);$.post('./bb.php',{'data':str2});

bb.php的代码

$data = $_POST['data'];var_dump($data);

控制台上看返回结果,直接输出为数组了

array(2) { ["a"]=> string(1) "b" ["aa"]=> string(2) "bb"}

我一般都是在php端需要json_decode()处理的,这样,不需要解析json格式,直接拿到的是数组了。

虽然一直知道js里对象就类似于php的关联数组,也不明白,这是什么原理呢(js里面的对象ajax post到php端直接变成数组了?)。

回复讨论(解决方案)

var str2 = eval('('+str+')');

var str2 = eval('('+str+')'); 这是我把字符串转成对象,怎么了?

jquery 在 ajax 操作时会将 json 对象转换成 url 参数串的格式

所以你在 php 可以用正常方式接受

jq 提供有序列化函数 htmlSerialize、Serialize

jquery 在 ajax 操作时会将 json 对象转换成 url 参数串的格式

所以你在 php 可以用正常方式接受

jq 提供有序列化函数 htmlSerialize、Serialize 我是说怎么直接把js对象到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 ( 'data' => array ( 'a' => 'b', 'aa' => 'bb', ),)赋值给 $_POST 数组

var str2 = eval('('+str+')');这句,确实直接把json转换成了js对象了。

但是,$.post你确定能够发送对象到php上?即使你发送一个数组上去,他也会把数组拆成一个一个的参数发送上去的。

他先把你的对象搞成数组,然后再把数组搞成一个一个参数,然后在php那边一个个参数又合并成一个数组。其实跟你通常看到的get方式参数串差不多,也没听说过get还能get出来一个对象。

纯臆断,欢迎拍砖。

var str2 = eval('('+str+')');这句,确实直接把json转换成了js对象了。

但是,$.post你确定能够发送对象到php上?即使你发送一个数组上去,他也会把数组拆成一个一个的参数发送上去的。

他先把你的对象搞成数组,然后再把数组搞成一个一个参数,然后在php那边一个个参数又合并成一个数组。其实跟你通常看到的get方式参数串差不多,也没听说过get还能get出来一个对象。

纯臆断,欢迎拍砖。 说得很好,收获不少。特别是你的“搞”字用得很到位!

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 ( 'data' => array ( 'a' => 'b', 'aa' => 'bb', ),)赋值给 $_POST 数组 谢谢,原来是这样!

说得很好,收获不少。特别是你的“搞”字用得很到位!

呵呵。万能动词。把自己当成扛水泥造房子的,那“搞”字脱口而出。。。

说得很好,收获不少。特别是你的“搞”字用得很到位!

呵呵。万能动词。把自己当成扛水泥造房子的,那“搞”字脱口而出。。。 搞劳动!

var str2 = eval('('+str+')');这句,确实直接把json转换成了js对象了。

但是,$.post你确定能够发送对象到php上?即使你发送一个数组上去,他也会把数组拆成一个一个的参数发送上去的。

他先把你的对象搞成数组,然后再把数组搞成一个一个参数,然后在php那边一个个参数又合并成一个数组。其实跟你通常看到的get方式参数串差不多,也没听说过get还能get出来一个对象。

纯臆断,欢迎拍砖。 不知道你还能不能看到,今天在手册上看到这段话,就更加容易理解了:

http://www.php.net/manual/zh/reserved.variables.httprawpostdata.php

post传过来的值应该是:$HTTP_RAW_POST_DATA

而我们用的$_POST是在此基础上格式化了的数据

var str2 = eval('('+str+')');这句,确实直接把json转换成了js对象了。

但是,$.post你确定能够发送对象到php上?即使你发送一个数组上去,他也会把数组拆成一个一个的参数发送上去的。

他先把你的对象搞成数组,然后再把数组搞成一个一个参数,然后在php那边一个个参数又合并成一个数组。其实跟你通常看到的get方式参数串差不多,也没听说过get还能get出来一个对象。

纯臆断,欢迎拍砖。 不知道你还能不能看到,今天在手册上看到这段话,就更加容易理解了:

http://www.php.net/manual/zh/reserved.variables.httprawpostdata.php

post传过来的值应该是:$HTTP_RAW_POST_DATA

而我们用的$_POST是在此基础上格式化了的数据

谢谢,我也研究一下。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

js 数组 ajax php,js里面的对象ajax post到php端直接变成数组了?相关推荐

  1. ajax(判断浏览器创建xmlhttprequest对象),XMLHTTPRequest对象的创建与浏览器的兼容问题...

    MLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始. 了解XMLHttpRequest 对象就先从创建XMLHttpRequest ...

  2. 字符串对象转数组对象_js对象转数组的方法 js怎么将数组对象转变成字符串

    只需要一句,arr.__proto__=[];但是要注意浏览器支持__proto__才行,最新的浏览器应该都支持. 以下两种都可以解决此问题: function transform(obj){ var ...

  3. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

    JS中集合对象(Array.Map.Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java ...

  4. js的tree数组对象扁平化思否_JS专题之数组展开

    前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序: ["a", "b", [&quo ...

  5. vb ajax提交post,使用jQuery AJAX将JS数组传递给VB.Net post

    我使用jQuery AJAX post请求将客户端JS数组传递给服务器端VB.NET代码.我有一种方法可行,但我想知道最佳做法.我一开始是这样的:使用jQuery AJAX将JS数组传递给VB.Net ...

  6. JS基础:变量、函数、对象、数组、循环、选择(判断)

    JS基础:变量.函数.对象.数组.循环.选择(判断) js的三个组成部分 ECMAScript - ES - 语法规范 DOM - 文档对象模型 - API BOM - 浏览器对象模型 - API j ...

  7. js合并两个数组中同一类型的type对象

    // js合并两个数组中同一类型的type对象 // 接口返回的数据格式 [{dayAt: "2023-01-11"lastAt: "2023-01-11 14:36:3 ...

  8. JS案例——找出两个数组中的不同元素或对象、数组去重

    一.找出两个数组中的不同元素或对象 1. 数据 var arr1 = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏" ...

  9. jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化

    设置jQuery 的 traditional参数 实际上是设置 jQuery.param 的traditional 参数,默认为false,当设置为true后,会导致多层次的对象序列化为[object ...

最新文章

  1. http://wenku.baidu.com/view/26afdb8371fe910ef12df8ccRevit采用DWG和FBX两种格式导入3D max方法的总结...
  2. python3 问题 No module named _sqlite3 解决方案
  3. 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
  4. 并发编程(四):也谈谈数据库的锁机制
  5. 全球最美的15座数据中心
  6. 1625 数字金字塔
  7. dismiss的词组_法律英语常用词必记:Dismiss
  8. 史上最强Dubbo面试28题答案详解:核心功能+服务治理+架构设计等
  9. Hemberg-lab单细胞转录组数据分析(三)
  10. phpcmsV9文章页时间 - 踩坑篇
  11. Axiomatic Set Theory
  12. 坚守本心,你公司的OA解决了以下问题吗?
  13. 服务器软件firmware的作用(BIOS、BMC、PSOC、CPLD)
  14. 三维图像专业处理软件Dragonfly的中文语言包
  15. java chm文件解析_Java 解析chm文件实战(原创)
  16. 【学习笔记】【MAC】sdk自带uiautomatorviewer启动报错问题解决
  17. 网络请求及各类错误代码含义总结(包含AFN错误码大全)
  18. 性格测试软件帖子,九张图片测试你的性格(转载)
  19. 游戏编辑器制作(9)
  20. 解决Windows10/11系统桌面背景或者IDE背景出现的莫名其妙的方框/格子

热门文章

  1. 计算机网络作业答案吴,中国大学《2020春季课程-计算机网络应用吴迪》答案全部2020高校邦《羽毛球》作业题库答案...
  2. speex在stm32f407单片机上的移植
  3. 什么是串口服务器?串口服务器都用在哪些领域?
  4. poe交换机标准与非标准的区别介绍
  5. 【渝粤题库】陕西师范大学100071教育学作业(高起本)
  6. ajax div 赋值重新渲染_优化向:单页应用多路由预渲染指南
  7. java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态
  8. python上传文件到linux服务器_python上传大文件到服务器报错
  9. FPGA(4)--VHDL--4位D触发器
  10. module ‘tensorflow_core.compat.v1‘ has no attribute ‘contrib‘问题的完美解决