JSON/XmlHttpRequest: Objekter i objekter
Jeg har skrevet følgende script:<script type="text/javascript">
var reqobj = {
xht: null,
init: function() {
// alert('test');
try {
if(window.XMLHttpRequest) {
this.xht = new XMLHttpRequest()
} else if(window.ActiveXObject) {
this.xht = new ActiveXObject("Microsoft.XMLHTTP")
}
}
catch(e) {
// alert('Request object could not be initialized!');
}
if(this.xht) this.xht.onreadystatechange = this.handle_response
},
request_file: function(filename) {
// alert('yes'+this.xht)
if(!this.xht) this.init()
this.xht.open("GET", "test.txt", true)
this.xht.send(null)
// alert('nu');
this.handle_response();
},
handle_response: function() {
// alert(this.xht)
}
}
reqobj.request_file('test.txt');
</script>
Problemet i ovenstående er at this.xht er undefined når det kaldes via onreadystatechange. Jeg har forsøgt at omskrive scriptet til "procedural style" (ikke objekt-orienteret) og så virker det fint.
Hvorfor er det undefined? Og hvordan undgår jeg det bliver det? Andre alternativer?
Et lille tillægsspørgsmål: skal jeg bare droppe alt det JSON/OOP hvad angår min xmlhttprequest-handler? Umiddelbart ser jeg flere fordele i at skrive det i OOP, men det er ikke sikkert det er det værd hvis det er meget tungere for klienten??..
På forhånd tak
