12.ajax中data传参键名是变量不能识别

2016.09.09


1.问题描述


今天做用户注册的前端验证和ajax异步查库验证时,js写了一个公共函数来验证用户名手机号密码三个输入框,所以需要传入参数key指明验证的是哪一样,用哪个正则,value是要验证的值。
用户名和手机号在正则验证通过后需要ajax传递到后台进行查库验证已存在,在ajax中数据项 data:{ key:value} 传递时发现 value 值正确解析出来,但是 key 并没有进行解析,而是识别为一个字符串。
如key='name',value='darry',传递过去的数据是{key:darry}而不是{name:darry}



2.解决过程
网上查询发现可以使用对象类型来进行传递可以正确解析,
var data = {};
key = 'name';
value = 'darry';
data[key] = value; //相当于data['name'] = 'darry';

此时ajax的data数据项应改为
data:data,

通过console.log在浏览器控制台进行输出发现可以正常解析,


3.总结
原以为将键和值写进对象,ajax提交到后端的也是对象,但是在后端按对象进行接收解析
$name = $_POST['data'].name;

$name = $_POST['data']->name;
但是发现出错,查看浏览器控制台,发现此时ajax提交到后台的数据也是json键值对,所以应该还是按照之前的方式进行接收和解析。

$name = $_POST['name'];

你可能感兴趣的:(学习笔记)