Bonjour,

J'ai un petit soucis en JS, j'ai créé deux scripts utilisant Prototype.js :
Code ajax.js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
var Request = {
        send: function(url, callback) {
                new Ajax.Request(url, {
                        method: 'post',
                        asynchronous: 'true',
                        onSuccess: function(request) {
                                callback(request.responseXML);
                        },
                        onFailure: function(request) {
                                alert('Error ' + request.status + ' -- ' + resquest.statusText);
                        },
                        onException: function(request, exception) {
                                alert('Exception :' + exception);
                        }
                });
        }
}

et
Code menu.js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
Menu = Class.create({   
        XML_FILE: "xml/menu.xml",
 
        _items: [],
 
        initialize: function() {
                this._items = new Array();
        },
 
        load: function() {
                new Request.send(this.XML_FILE, this._loadCallBack);
        },              
 
        _loadCallBack: function(responseXML) {
                var items = responseXML.getElementsByTagName("item");
                for (var i = 0; i < items.length; i++) {
                        var item = new Menu.Item(items[i]);
                        this._items.push(item);
                }
                alert(this.toHtml());
        },
 
        toHtml: function() {
                var html = "<ul>";
                for (var i = 0; i < _items.length; i++) {
                        html += _items[i].toHtml();
                }
                html += "</ul>";
                return html;
        }
});
 
Menu.Item = Class.create({
        _title: null,
 
        initialize: function(itemXMLElement) {
                this._title = itemXMLElement.getAttribute("title");
        },
 
        getTitle: function() {
                return this._title;
        },
 
        toHtml: function() {
                return "<li><a href=\"#\">" + this._title + "</a></li>";
        }
});

Lorsque j'execute new Menu().load() j'obtient l'exception "Type Error : _items has no properties".
Il semblerai que this._items dans la fonction _loadCallBlack ne soit pas définie.
Alors que la fonction est une fonction interne de la classe Menu.

Comment resourdre le problème ?

Merci d'avance.
Gronono