最近在做一个有后台验证登录界面,其中踩了许许多多的坑,现在将这些我遇到的坑列出来,供自己以后查看总结。

这是我遇到的第一个坑,由于我实在学完JS后直接接受的这个任务,所以刚开始连什么是json,什么是ajax都不知道。在做的过程中才慢慢学到了json和ajax的相关知识。这两部分的基础要扎实。坑具体是这样的,我在做这个页面的提交时没有用到form表单,form表单里有这两个属性enctype=“application/x-www-form-urlencoded”和method=“post”。前一个是用来在提交前对表单内的内容进行编码,编码成name1=value1&nam2=value2这种键值对的方式,后一个是用来决定是以get方式发送还是以post方式发送,我做的这个任务里是要求以post方式发送json格式的数据,如果用form提交的话,就算在JS中已经将数据转换为json格式,在提交的时候还是得将json里的数据转换成enctype能发送的键值对的方式,这样不符合要求。我在用ajax怎么才能将数据以post方式提交这里话费了好长时间。最后我的解决办法是:
var para = {“name”:”kuisahn”,”age”:20,”mobile”:”***********”};
将数据封装到创建的一个对象中 ,这里等号后边虽然有花括号,但这个花括号不是json中的花括号,是表明其中的内容在para这个对象中,如果要想让其变成json格式的字符串的话需要这样处理:
var para=JSON.stringify({“name”:”kuisahn”,”age”:20,”mobile”:”***********”});
这样处理, 才可以将{“name”:”kuisahn”,”age”:20,”mobile”:”***********”}这个对象变换成json格式的字符串储存在para中。
现在已经将要传送的字符串变换成了符合传送要求的json格式。
如何发送不难,在创建ajax接口对象jsonHttp后,使用ajax的open、setrequestheader、send方法:
jsonHttp.open(‘POST’,url,true);
使用post发送还得再写一行代码:
JsonHttp.setRequestHeader(‘Content-type’,’application/json;charset-UTF-8’);
其中content-type是指能够满足接受条件的类型,后边的application/json就是指要发送的数据的格式是json格式,如果是application/x-www-form-urlencoded,就说明你要将数据以键值对的方式发送给后端,如果是text/plain就说面你要发送的是纯文本。charset-UTF-8是指以utf-8来编码,如果不带这句就说明你要发送不带字符编码的数据;
jsonHttp.send(para);
将数据发送出去;
发送出去后就可以在jsonHttp.onreadystatechange() = function中处理服务器返回的对象,使用jsonHttp.parse(返回的对象);将返回的对象转换成需要的json格式,然后就可以将其中的数据显示在用户面前啦;