PHP容易忽略的小知识

1. JSON.parse()

JSON.parse用于从一个字符串中解析出json对象
例如:

~
var str = '{"name":"huangxiaojian","age":"23"}'
JSON.parse(str);
~

结果:Object
age: “23”
name: “huangxiaojian”
proto: Object
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。

2. JSON.stringify()

JSON.stringify()用于从一个对象解析出字符串
例如:

~
var a = {a:1,b:2}
JSON.stringify(a)
~

结果:”{“a”:1,”b”:2}”

- ##### JSON.stringify() 应用

下面代码,炸一看没什么毛病,代码简单明了,但是运行的时候却报错。

~


window.onload = function() {
var formData = new FormData();
formData.append('username','iiii');
$.ajax({
type:"post",
url:"regist/regist2.php",
async:true,
data: formData,
dataType: "json",
success: function(data) {
console.log(data);
}
});
}

~

错误信息

Jquery实现Ajax异步提交时报错”Uncaught TypeError: Illegal invocation”,百度一查发现formData是一个对象,在JQ封装是Ajax发送请求上传数据的时候,只能传字符串,jquery传递对象/数组,无法传递,并且服务端无法获取数据。JSON.stringify()方法,它可以将客户端发送的JSON数据对象进行序列化操作。因为需要把对象json序列化后,才能传递到后台,后台根据json字符串进行反序列化。

~
data:{wi:JSON.stringify(formData)}, // 将formData实例化
~

当然,当使用原生Ajax时,可以不用实例化

~~~
// 原生 Ajax

<script type="text/javascript">
    window.onload = function() {
        var formData = new FormData();
        formData.append('username','iiii');
        var xhr = new XMLHttpRequest();
        xhr.onload = function() {
            console.log(this.responseText)
        }
        xhr.open("POST","regist/regist2.php",true);
        xhr.send(formData);
    }
</script>

~~~

3. header()

header() 函数向客户端发送原始的 HTTP 报头。
例如:

~

4. 自定义属性

~
var checks = $("input:checkbox");
var userSelect = [];
var _key = 0;
for(var i in checks) {
if(checks[i].checked == true) {
userSelect[key].name = $(".name"+i+"").html();
userSelect[_key].amount = $("input:text")[i].value;
_key++;
}
}
~

image.png

why????因为userSelect是数组,userSelect[]是值,不能直接设置属性,

~
var checks = $("input:checkbox");
var userSelect = [];
var _key = 0;
for(var i in checks) {
if(checks[i].checked == true) {
userSelect[_key] = {}; // 将userSelect = [] 设置为对象
userSelect[key].name = $(".name"+i+"").html();
userSelect[_key].amount = $("input:text")[i].value;
_key++;
}
}
~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值