PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [jQuery,Javascript]Problem bei $.ajax laden von scripts in rekursiver funktion



Hendy
03.07.2011, 14:59
Hallo,

ich habe ein Problem beim laden von mehreren scripts in der Funktion. Seltsamerweise
wird die funktion nur 2x durchlaufen und bleibt dann stehen.
Hat einer ne Idee?

Code:
http://pastebin.com/szB6uXPB


(http://pastebin.com/szB6uXPB)

Drakes
03.07.2011, 19:50
Ich kann nicht bestätigen, dass es nur 2x durchläuft, wobei ich die Addressen geändert habe.
Hast du versucht deine Seite mit Firebug zu debuggen?
Wobei die Prozentanzeige IMO falsch ist, wolltest du nicht folgendes?


$(RLoad.PreloadView).html('Loading: ' + Math.round( (RLoad.LoadCount - 1) / RLoad.Scripts.length * 100) + '% / 100%');

Hendy
03.07.2011, 21:15
Die Sache ist diese, dass es mir sagt = File in js/rajax/jquery.rajax.transition.js could not be loaded.
obwohl der Request im Dragonfly(opera) aufgelistet ist.

Aber scheinbar gibt $.ajax die error message aus. Sehr verwirrend.

Habe mal den transition teil rausgenommen..scheint dann zu funktionieren
nur zeigt dann 25%/100% an was auch nich stimmt...

Die Fehlerkonsole zeigt nichts an.

Bei der Prozentangabe, nunja, nach deiner rechnung wäre es ja
((0 - 1) / 5) = -0,2 * 100 = -20
((1 - 1) / 5) = 0 * 100 = 0
((2 - 1) / 5) = 0,2 * 100 = 20
usw..

Aber es is irgendwie so als würde er 1 Prozent mehr sagen, hmm...

Drakes
04.07.2011, 17:42
Ja, meine Prozentangabe war falsch aber sie ging wenigstens bis 100%. xD
Ich denke dein ++ ist nicht optimal gesetzt, bei der aktuellen variante wird die Rekursion einmal zu oft ausgeführt.
Geändert habe ich: das remove (hat nich geklapt), +1 verschoben, <= zu < und RLoad.LoadCount / RLoad.Scripts.length * 100
Meine Variante:



var RLoad = {};
RLoad.LoadCount = 0;
RLoad.Scripts = [
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js',
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js',
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js',
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js',
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js'
];
$(function() {
//$.ajaxSetup({ cache: true });

RLoad.PreloadView = $('<div style="position:absolute; top:7px; left:7px; border:1px solid black; background:white; padding:3px; font-size:10pt; font-family:\'courier\'" />').appendTo($('body'));

function autoloadScripts(url)
{
if(RLoad.LoadCount < RLoad.Scripts.length)
{
$.ajax({
url: url,
dataType: 'script',
success: function() {
RLoad.LoadCount += 1;
$(RLoad.PreloadView).html('Loading: ' + Math.round( RLoad.LoadCount / RLoad.Scripts.length * 100) + '% / 100%');
autoloadScripts(RLoad.Scripts[RLoad.LoadCount]);
},
error : function() {
$('body').append('<br />File in ' + url + ' could not be loaded.');
}
});
}
else
{
$(RLoad.PreloadView).remove();
}
}

autoloadScripts(RLoad.Scripts[0]);
});

Hendy
04.07.2011, 19:26
Ja danke für die Hilfe,
habe das Problem jetzt gelöst.

Hatte natürlich nicht daran gedacht, dass das JS beim request nicht nach gültigkeit vom Dragonfly geprüft wurde.
Die transition datei hatte einen Fehler.
War nur ein ) dran Schuld das es nicht ging.

Kann geschlossen werden!