Unfinded terwijl het object bestaad...
Ik ben even aan het experimenteren met Prototype, hiervoor heb ik het volgende stukje code:
Code (php)
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
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
function DevHouse()
{
this.clearField = function(field, standard_value)
{
if(field.value == standard_value)
{
field.value = '';
}
}
this.Request = function()
{
this.Json = function(url)
{
new Ajax.Request(url, {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
return transport.responseText.evalJSON(true);
}
});
}
}
}
window.onload = function()
{
devHouse = new DevHouse();
request = new devHouse.Request();
json = new request.Json('http://beta.devhouse.nl/js/forum/');
alert('Test: '+ json.name);
}
{
this.clearField = function(field, standard_value)
{
if(field.value == standard_value)
{
field.value = '';
}
}
this.Request = function()
{
this.Json = function(url)
{
new Ajax.Request(url, {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
return transport.responseText.evalJSON(true);
}
});
}
}
}
window.onload = function()
{
devHouse = new DevHouse();
request = new devHouse.Request();
json = new request.Json('http://beta.devhouse.nl/js/forum/');
alert('Test: '+ json.name);
}
als ik de pagina nu open zie ik een alert verschijnen met de text: Test: unfinded. Dit vind ik raar omdat in http://beta.devhouse.nl/js/forum/ name gewoon bestaat. In dit bestand staat de code:
{ "name": "Violet", "occupation": "character" }'
Weet iemand waar het probleem aan ligt en hoe ik het kan verhelpen?
Tom
PS: Als ik return transport.responseText.evalJSON(true); zal vervangen door alert(transport.responseText.evalJSON(true).name) zie ik Violet verschijnen, de fout zit dus niet in de json.
Gewijzigd op 01/01/1970 01:00:00 door Tom K
Intern werkt het meer iets in deze richting:
1. Jij maakt je XMLHttpRequest object, en kent een functie aan onreadystatechange toe.
2. Jij roept [XMLHttpRequest].send() aan
3. send() is meteen klaar, want deze wacht niet op antwoord van de server waar je je request heen stuurt. (Dit komt door de "true" die je meegeeft als 3e parameter aan [XMLHttpRequest].open())
... er gebeurt even niets
4. Je request krijgt eindelijk antwoord, en onreadystatechange wordt aangeroepen. Dit gebeurt een paar keer, totdat readystate 4 is. Op dat moment kan je responseText pas uitlezen, want dan pas is het hele antwoord binnen.
edit: Hij is een beetje outdated (en wat kinderachtig :P) maar mijn tutorial hierover kan je toch een beetje op weg helpen met het begrijpen van hoe XMLHttpRequest echt werkt, wat verborgen wordt door libraries. Wel zo handig als je moet debuggen :)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
ok, dus als ik het goed begrijp is this.Json = function(url) eigelijk gestopt voordat er iets gereturnt is. hoe kan ik er voor zorgen dat het wel werkt?
bump
bump
Omdat het beveiligd is met een gebruikersnaam en wachtwoord? :P
GaMer13 schreef op 04.03.2009 18:02:
Omdat het beveiligd is met een gebruikersnaam en wachtwoord? :P
daar kan het niet aan liggen, omdat ik wel natuurlijk wel een sessie heb
bump
De code met die fout:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var widgetApi = function() {
this.getUsername = function() {
var returnedValue = '';
$.ajax({
url: '/user/login/login',
type: 'get',
success: function (j) {
returnedValue = j;
}
});
while(true) {
if(returnedValue == '') {
} else {
alert('LOL');
break;
}
}
};
};
this.getUsername = function() {
var returnedValue = '';
$.ajax({
url: '/user/login/login',
type: 'get',
success: function (j) {
returnedValue = j;
}
});
while(true) {
if(returnedValue == '') {
} else {
alert('LOL');
break;
}
}
};
};