js 数组 ajax php,js里面的对象ajax post到php端直接变成数组了?
本帖最后由 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端直接变成数组了?相关推荐
- ajax(判断浏览器创建xmlhttprequest对象),XMLHTTPRequest对象的创建与浏览器的兼容问题...
MLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始. 了解XMLHttpRequest 对象就先从创建XMLHttpRequest ...
- 字符串对象转数组对象_js对象转数组的方法 js怎么将数组对象转变成字符串
只需要一句,arr.__proto__=[];但是要注意浏览器支持__proto__才行,最新的浏览器应该都支持. 以下两种都可以解决此问题: function transform(obj){ var ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
JS中集合对象(Array.Map.Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java ...
- js的tree数组对象扁平化思否_JS专题之数组展开
前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序: ["a", "b", [&quo ...
- vb ajax提交post,使用jQuery AJAX将JS数组传递给VB.Net post
我使用jQuery AJAX post请求将客户端JS数组传递给服务器端VB.NET代码.我有一种方法可行,但我想知道最佳做法.我一开始是这样的:使用jQuery AJAX将JS数组传递给VB.Net ...
- JS基础:变量、函数、对象、数组、循环、选择(判断)
JS基础:变量.函数.对象.数组.循环.选择(判断) js的三个组成部分 ECMAScript - ES - 语法规范 DOM - 文档对象模型 - API BOM - 浏览器对象模型 - API j ...
- js合并两个数组中同一类型的type对象
// js合并两个数组中同一类型的type对象 // 接口返回的数据格式 [{dayAt: "2023-01-11"lastAt: "2023-01-11 14:36:3 ...
- JS案例——找出两个数组中的不同元素或对象、数组去重
一.找出两个数组中的不同元素或对象 1. 数据 var arr1 = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏" ...
- jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化
设置jQuery 的 traditional参数 实际上是设置 jQuery.param 的traditional 参数,默认为false,当设置为true后,会导致多层次的对象序列化为[object ...
最新文章
- http://wenku.baidu.com/view/26afdb8371fe910ef12df8ccRevit采用DWG和FBX两种格式导入3D max方法的总结...
- python3 问题 No module named _sqlite3 解决方案
- 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
- 并发编程(四):也谈谈数据库的锁机制
- 全球最美的15座数据中心
- 1625 数字金字塔
- dismiss的词组_法律英语常用词必记:Dismiss
- 史上最强Dubbo面试28题答案详解:核心功能+服务治理+架构设计等
- Hemberg-lab单细胞转录组数据分析(三)
- phpcmsV9文章页时间 - 踩坑篇
- Axiomatic Set Theory
- 坚守本心,你公司的OA解决了以下问题吗?
- 服务器软件firmware的作用(BIOS、BMC、PSOC、CPLD)
- 三维图像专业处理软件Dragonfly的中文语言包
- java chm文件解析_Java 解析chm文件实战(原创)
- 【学习笔记】【MAC】sdk自带uiautomatorviewer启动报错问题解决
- 网络请求及各类错误代码含义总结(包含AFN错误码大全)
- 性格测试软件帖子,九张图片测试你的性格(转载)
- 游戏编辑器制作(9)
- 解决Windows10/11系统桌面背景或者IDE背景出现的莫名其妙的方框/格子
热门文章
- 计算机网络作业答案吴,中国大学《2020春季课程-计算机网络应用吴迪》答案全部2020高校邦《羽毛球》作业题库答案...
- speex在stm32f407单片机上的移植
- 什么是串口服务器?串口服务器都用在哪些领域?
- poe交换机标准与非标准的区别介绍
- 【渝粤题库】陕西师范大学100071教育学作业(高起本)
- ajax div 赋值重新渲染_优化向:单页应用多路由预渲染指南
- java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态
- python上传文件到linux服务器_python上传大文件到服务器报错
- FPGA(4)--VHDL--4位D触发器
- module ‘tensorflow_core.compat.v1‘ has no attribute ‘contrib‘问题的完美解决