Ajax的注意事项
case 1:
无论是使用原生的JavaScript,还是JQuery,通过Ajax请求后端程序数据,返回的数据默认是字符串,字符串,字符串,重要的事情说三遍!!!
case 2:
不要尝试直接将返回的值和一个数字进行比较,也不要直接作为if或者while的条件,因为字符串作为条件始终为真,即使是“0”,是会认为是true;其次,数字0和字符串“0”始终不相等,要进行比较的话,应该先使用parseInt(res)将string的res转换为int。
case 3:
后端程序中,要返回给ajax的数据应该使用echo,print,print_r,var_dump等将数据输出,是将数据输出,输出,不要使用return 返回数据,重要的事情说三遍!!!如果是数组或者对象,则先将对象或者数组序列化为json格式的字符串,再echo。。后端程序中输出什么数据,ajax获得的就是什么数据,如果使用return,那么ajax什么都获取不,即使打印变量,也是一个undefined。
以下的做法是错误的:假设ajax请求index.php,需要获得一个flag标志,但是index.php是return一个flag,于是ajax获得的是一个空字符串,而不是flag!!!!!
<?php $flag = "true"; return $flag; ?>
case 4:
后端程序也许只输出了一个字符,但是,ajax收到的数据可不止一个字符,还包含很多空格,所以要使用res.trim()来清楚空格。
case 5:
在使用ajax来请求时,XMLHttpRequest的open(method,url,async)方法中:
如果选择异步方式即Async为true(推荐的),那么XMLHttpRequest对象的readyState每次发生变化,都会触发onreadystatechange事件,可以通过readyState和status的值来判断进行到哪一阶段,结果如何。
如果选择同步方式即Async为false(不推荐),那么就不用为onreadystatechange事件绑定什么处理函数,因为只有当成功或者获得结果的时候才会进行下一步操作,此时readyState必定为4。