,比如xhr.open('GET','user_list.php',true);这里的GET是请求方法,user_list.php是后端提供数据的接口,true表示异步请求。
接着,你要设置请求头,告诉服务器你发送的数据类型,xhr.setRequestHeader('Content-type','application/x--form-urlencoded');最后,就是处理服务器返回的数据了,xhr.onreadystatechange=function{if(xhr.readyState==4&&xhr.status==200){varresponse=JSON.parse(xhr.responseText);//处理返回的数据,这里假设返回的是JSON格式的数据}};然后调用xhr.send;发送请求。
你看看你是哪一步出问题了?”
李君浩看着魏晨的演示,一边思考一边说:“魏哥,我好像在设置请求头和处理返回数据那里有点乱。
我不太清楚不同的数据类型该怎么设置请求头,还有返回的数据格式也不太会处理。
”魏晨耐心地解释道:“如果是普通的表单数据,就像刚才那样设置请求头。
如果是JSON数据,请求头要设置成xhr.setRequestHeader('Content-type','application/json');,发送数据的时候要用JSON.stringify(data)把数据转换成JSON字符串。
处理返回数据的时候,如果是JSON格式,就像我刚才那样用JSON.parse解析。
要是返回的是XML格式,那就得用XML解析的方法了。
比如说varxmlDoc=xhr.responseXML;varnodes=xmlDoc.getElementsByTagName('user');然后遍历节点获取数据。
”
李君浩认真地听着,不停地提问,魏晨一一解答。
在魏晨的指导下,李君浩逐渐掌握了ajax的基本用法。
他迫不及待地想要在实际项目中应用一下。
可是,在项目中应用ajax时,李君浩又遇到了一个极其诡异的问题。
他的ajax请求在自己的电脑上运行得好好的,但是一部署到测试服务器上,就总是报错,提示“请求失败”,可又没有具体的错误信息。
他检查了服务器环境配置,确认和自己电脑上的一致,又仔细检查了代码,也没有发现任何问题。
他尝试在网上搜索解决方案,在各种技术论坛和网站上发帖求助,然而几天过去了,依然没有找到有效的解决办法。
就在李君浩几乎要放弃的时候,一次偶然的机会,他在公司的技术交流群里看到有人提到了服务器的安全策略可能会影响ajax请求。
他灵机一动,会不会是测试服务器的安全设置阻止了ajax请求呢?他立刻联系公司的运维人员,说明了情况。
运维人员检查后发现,测试服务器的防火墙设置中,默认禁止了部分ajax请求的端口。
运维人员调整了