768 Stimmen

Fehler beim Überschreiten der maximalen Aufrufstapelgröße

Ich verwende eine Direct Web Remoting (DWR) JavaScript-Bibliotheksdatei und erhalte nur in Safari (Desktop und iPad) einen Fehler

Dort heißt es

Maximale Größe des Aufrufstapels überschritten.

Was genau bedeutet dieser Fehler, und wird die Verarbeitung vollständig abgebrochen?

Auch eine Lösung für Safari Browser (eigentlich auf der iPad Safari heißt es

JS:execution exceeded timeout

Ich nehme an, dass es sich dabei um dasselbe Problem mit dem Aufrufstapel handelt.)

4 Stimmen

Ich bekam diesen Fehler, als ich versuchte, Variablen (ohne sie zu deklarieren) zu senden, durch data in Ajax. Der Fehler wurde durch Deklaration der Variablen behoben.

0 Stimmen

Endlosschleife ...

0 Stimmen

Bei mir war der Name meiner JavaScript-Funktion onclick() und ich bekam diesen Fehler :-) Dies sind zwar reservierte Namen

5voto

Aman Punkte 1889

In meinem Fall vergesse ich grundsätzlich, die value von input .

Falsch

let name=document.getElementById('name');
param={"name":name}

Richtig

let name=document.getElementById('name').value;
param={"name":name}

0 Stimmen

Ähnlich wie bei @FKasa, nur eben in Javascript

1 Stimmen

Genau das ist mir passiert - ich habe versehentlich das gesamte Eingabefeld gesendet, nicht nur den Wert des Feldes.

5voto

El_boogy Punkte 91

Das Senden von Eingabeelementen anstelle ihrer Werte wird das Problem höchstwahrscheinlich lösen, wie FK erwähnte

0 Stimmen

Das war mein Problem facepalm Ich habe vergessen, den Wert zu senden, stattdessen habe ich das ganze Element an meine Ajax-Funktion gesendet

4voto

Dr. Dama Punkte 169

Wenn Sie aus irgendeinem Grund einen unendlichen Prozess/Rekursion benötigen, können Sie einen Webworker in einem separaten Thread verwenden. http://www.html5rocks.com/en/tutorials/workers/basics/

wenn Sie Dom-Elemente manipulieren und neu zeichnen wollen, verwenden Sie die Animation http://creativejs.com/resources/requestanimationframe/

4voto

Scott Punkte 669

Wir haben kürzlich ein Feld zu einer Verwaltungsseite hinzugefügt, an der wir arbeiten - contact_type... einfach, oder? Nun, wenn Sie die Auswahl "Typ" aufrufen und versuchen, das durch einen Jquery Ajax-Aufruf zu senden, schlägt es mit diesem Fehler tief in jquery.js begraben fehl Tun Sie das nicht:

$.ajax({
    dataType: "json",
    type: "POST",
    url: "/some_function.php",
    data: { contact_uid:contact_uid, type:type }
});

Das Problem ist, dass type:type - ich glaube, wir nennen das Argument "type" - eine Wertvariable mit dem Namen type hat, was nicht das Problem ist. Wir haben das geändert in:

$.ajax({
    dataType: "json",
    type: "POST",
    url: "/some_function.php",
    data: { contact_uid:contact_uid, contact_type:type }
});

Und habe some_function.php entsprechend umgeschrieben - Problem gelöst.

1 Stimmen

Danke, dass Sie diese Antwort geschrieben haben. Tatsächlich habe ich festgestellt, dass ich die Variable, die ich in das serverseitige Skript eingefügt habe, nicht erstellt habe.

4voto

hayesgm Punkte 8190

In fast jeder Antwort steht, dass dies nur durch eine Endlosschleife verursacht werden kann. Das stimmt nicht, man könnte sonst den Stack durch tief verschachtelte Aufrufe überlaufen lassen (was nicht heißt, dass das effizient ist, aber es ist sicherlich im Bereich des Möglichen). Wenn Sie die Kontrolle über Ihre JavaScript-VM haben, können Sie die Stackgröße anpassen. Zum Beispiel:

node --stack-size=2000

Siehe auch: Wie kann ich die maximale Größe des Aufrufstapels in Node.js erhöhen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X