2
</
item
<
item
3
</
item
<
item
4
</
item
</
showbo
**test.html**
function
getajax(){
if
(window.XMLHttpRequest)
return
new
XMLHttpRequest();
else
if
(window.ActiveXObject)
return
new
ActiveXObject(
"
microsoft.xmlhttp
"
);
}
var
xhr
=
getajax();
xhr.onreadystatechange
=
function
(){
if
(xhr.readyState
==
4
){
if
(xhr.status
==
200
||
xhr.status
==
0
){
var
doc
=
xhr.responseXML,item
=
doc.getElementsByTagName(
"
item
"
);
alert(item.length);
//
在ie输出为0,在ff下为4。似乎在ie下未生成xml的树结构,具体原因要问ms了。。
}
else
alert(
’
发生错误/n/n
’
xhr.status);
}
}
xhr.open(
"
get
"
,
"
showbo.xml?_dc=
"
new
Date().getTime(),
true
);
xhr.send(
null
);
解决办法就是使用microsoft.xmldom对象重新建立xml的树结构,如下
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200||xhr.status==0){
var doc=xhr.responseXML;
if(document.all&&xhr.status==0){//为ie并且直接托进浏览器的时重构xml的树结构
doc=new ActiveXObject("microsoft.xmldom");
doc.loadXML(xhr.responseText);
doc=doc.documentElement;
}
var item=doc.getElementsByTagName("item");
alert(item.length);//
}
else
alert(
’
发生错误/n/n
’
xhr.status);
}
}
5,为post提交时需要注意的。
1)如果为post提交时,注意要设置content-type为"**application/x-www-form-urlencoded**",这样在动态页才可以使用request/request.form/request.querystring对象通过键获取值,否则得使用2进制数据,然后自己分析2进制数据生成字符串对象,使用正则什么的获取对应的值。
2)需要在open以后才能使用xhr.setRequestHeader方法,否则出错。
xhr.open(
"
post
"
,
"
xxxx.aspx
"
,
true
);
xhr.setRequestHeader(
"
content-type
"
,
"
application/x-www-form-urlencoded
"
);
//
这里。。。。
**6。还有一个问题忘记总结了,跨域的问题**
如果请求的页面不是当前站点的,那就跨域了,最好的解决方案就是服务器端的xhr请求
可以参考下面的的解决方案
[http://www.w3dev.cn/article/20090701/ajax-cross-domain-solution.aspx]( )
不久前放出的一个[http://www.w3dev.cn/article/20090625/150.aspx]( )
中就是使用了服务器端的xhr请求,应为请求的是Google和alexa的页面,所以跨域了,需要使用服务器端的xhr请求。
**乱码问题**
对于ajax应用来说,乱码也是一个经常出现的问题。
1)meta声明的charset要和请求的页面返回的charset一致。最好在请求的页面中再设置下输出编码。
asp: response.charset="gb2312或者utf-8"
asp.net: response.charset="gb2312或者utf-8"
php: header("charset=gb2312或者utf-8")
2)文件物理存储编码要和meta声明的编码要一致。如meta指定为gb2312,则物理存储编码为ansi。如果为utf-8,则要存储为utf-8编码。
对于asp,如果指定编码为utf-8,记得还要设置
'防止asp使用utf-8编码时中文出现乱码
Session.CodePage=65001
Response.CharSet="utf-8"
因为asp在国内服务器默认处理编码为gb2312
对于asp.net的话,meta设置为gb2312时,最好设置web.config文件中的
<
globalization
requestEncoding
=“gb2312”
responseEncoding
=“gb2312”
/>
,并且在输出中文前设置Response.CharSet="gb2312";
因为asp.net默认的编码为utf-8
3)发送中文到动态页面时使用escape/encodeURI/encodeURIComponent编码一下。建议使用encodeURIComponent。
更多的js编码信息查看这篇文章
[http://www.w3dev.cn/article/20090629/javascript-url-encoding-function-escape-encodeURI-encodeURIComponent.aspx]( )
对于php来说,还有个问题,需要在服务器点解码下。可以看这篇文章里面的讨论。
[写了一个php查询,但是就是传不出中文。]( )
4)如果1-2都对上了但是在接受服务器端发送的信息时还是出现乱码,试试用XML作为信息载体,然后使用responseXML分析下回传的xml文件。因为ajax原本就是用xml作为信息载体的。。。。。。ajax英文名原本就是“异步javascript和xml”【asynchronous javascript and xml】
如果不会解析xml文件,可以参考这篇文章
<http://www.w3dev.cn/article/20090702/javascript-parse-xml-file-methods-summary.aspx>
下面是一些csdn上出现乱码的文章和解决办法,还未解决的看看,是否和你的如出一辙。
[在FireFox浏览器中asp.net+AJAX传输的中文字符串到服务器端后乱码的问题!!!!]( ) [请教ajax返回乱码]( )
就列上面两个了,要查找更多的,查看这个查询连接,都是ajax出现乱码的问题。
[http://so.csdn.net/bbsSearchResult.aspx?q=ajax+%e4%b9%b1%e7%a0%81&p=0]( )
**同步问题**
问题描述如下,问题来自http://topic.csdn.net/u/20090630/16/d4d07596-65da-430c-8e89-cae60e25e03c.html,精简了下创建ajax的代码
function
callServerByPost(url,data,fun) {
var
http_request
=
null
;
if
(window.ActiveXObject)http_request
=
new
ActiveXObject(
"
Microsoft.XMLHTTP
"
);
}
else
if
(window.XMLHttpRequest) http_request
=
new
XMLHttpRequest();
if
(
!
http_request) {
alert(
’
Giving up :Cannot create an XMLHTTP instance
’
);
return
false
;
}
http_request.onreadystatechange
=
fun;
http_request.open(
"
POST
"
, url,
true
);
http_request.setrequestheader(
"
Content-length
"
,data.length);
http_request.setRequestHeader(
"
Content-Type
"
,
"
application/x-www-form-urlencoded;charset=UTF-8
"
);
http_request.send(data);
//
传送资料
}
function
ajax_post(url,data) {
url
=
url
"
?t=
"
new
Date();
callServerByPost(url,data,
function
fns(){
if
(http_request.readyState
==
4
) {
if
(http_request.status
==
200
) {
return
http_request.responseText;
//
在这里明明调试时http_request.responseText已经有值但是在外边却接收不到
}
else
{
alert(
"
你请求数据有错
"
);
}
}
});
}
function
getData(){
var
url
=
"
ajax_server.aspx
"
;
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!