TypeScript – 在TypeScript中实现的Ajax类
发布时间:2020-12-16 02:48:11 所属栏目:百科 来源:网络整理
导读:我正在尝试使用TypeScript编写Ajax类. TypeScript代码 – class Ajax { url: string; xmlData: string; mode: bool; response: string; objHttpReq:any; constructor (postUrl: string,postXml: string,postMode: bool) { this.url = postUrl; this.xmlData
我正在尝试使用TypeScript编写Ajax类. TypeScript代码 –
class Ajax { url: string; xmlData: string; mode: bool; response: string; objHttpReq:any; constructor (postUrl: string,postXml: string,postMode: bool) { this.url = postUrl; this.xmlData = postXml; this.mode = postMode; this.objHttpReq = new XMLHttpRequest(); this.objHttpReq.mode = this.mode; this.objHttpReq.onreadystatechange = this.OnRStateChange; this.objHttpReq.open("Post",this.url,this.mode); this.objHttpReq.send(this.xmlData); } OnRStateChange(){ if (this.readyState==4 && this.status==200) //here this refers to Ajax { //alert(xmlhttp.status); if( this.mode == false) { alert(this.responseText); } else { alert(this.responseText); } } } } 上面代码的JavaScript编译 var Ajax = (function () { function Ajax(postUrl,postXml,postMode) { this.url = postUrl; this.xmlData = postXml; this.mode = postMode; this.objHttpReq = new XMLHttpRequest(); this.objHttpReq.mode = this.mode; this.objHttpReq.onreadystatechange = this.OnRStateChange; this.objHttpReq.open("Post",this.mode); this.objHttpReq.send(this.xmlData); } Ajax.prototype.OnRStateChange = function () { if(this.readyState == 4 && this.status == 200) { //here this refers XMLHttpRequest object – works fine if(this.mode == false) { alert(this.responseText); } else { alert(this.responseText); } } }; return Ajax; })(); 问题是上面的TypeScript代码显示错误,因为Ajax类没有readyState,status和responseText属性.在TypeScript中编写Ajax类的正确代码应该是什么? 解决方法
您只需要添加如下所示的相应属性:
class Ajax { url: string; xmlData: string; mode: bool; response: string; objHttpReq:any; readyState: number; status: number; responseText: string; constructor (postUrl: string,this.mode); this.objHttpReq.send(this.xmlData); } OnRStateChange(){ if (this.readyState==4 && this.status==200) //here this refers to Ajax { //alert(xmlhttp.status); if( this.mode == false) { alert(this.responseText); } else { alert(this.responseText); } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |