• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Ajax, hunderte Request

CG.Projekt

Neues Mitglied
Hallo,

ich möchte auf meiner Seite Content nachladen (damit die Hauptladezeit bis die Seite sich aufgebaut hat nicht solange ist).
Also hab ich mir in PHP ein Code gebaut, der auf Ajax Requests hört und sende via Ajax einen Post an die PHP Klasse.

HTML:
<script>
var games = $('.match-history').children();

$.each(games, function(index, value) {
    $.ajax({
        type: "POST",
        url: '{{ path('cg_ajax') }}',
        data: {
            'class': '@lolrift:Match',
            'fnc': 'getMatchData',
            'fnc_args': {
                'matchId': $(value).attr('data-matchid'),
                'region': '{{ search.region }}',
                'currentPlayer': '{{ summoner.id }}'
            }
        }
    }).done(function (data) {
        if($(value).attr('data-gameData') == 'false') {
            $('#' + $(value).attr('id') + ' .panel-body').html('').append(data);

            $(value).attr('data-gamedata', 'true');
            console.log('done');
        }
    });
});
</script>

Der PHP Post rendert mit Twig einen Content und diesen holt sich dann der Ajax Request und fügt diesen dann ein.
Klappt soweit auch, ich seh den Content (das ein oder andere Bild wird nicht geladen) aber, wenn ich via Developer Console von Google Chrome in den "Network" Tab gehe, sehe ich aufeinmal das mehr als 700 Requests gesendet werden und er beendet die Requests nicht... Die Ladezeiten gehen weit über 3-4 Minuten und stoppen einfach nicht....

Woran liegt das? Bzw. woran kann dies liegen.

MfG

upload_2016-12-13_9-34-25.png
 
Werbung:
Hallo,

ich möchte auf meiner Seite Content nachladen (damit die Hauptladezeit bis die Seite sich aufgebaut hat nicht solange ist).
Also hab ich mir in PHP ein Code gebaut, der auf Ajax Requests hört und sende via Ajax einen Post an die PHP Klasse.

HTML:
<script>
var games = $('.match-history').children();

$.each(games, function(index, value) {
    $.ajax({
        type: "POST",
        url: '{{ path('cg_ajax') }}',
        data: {
            'class': '@lolrift:Match',
            'fnc': 'getMatchData',
            'fnc_args': {
                'matchId': $(value).attr('data-matchid'),
                'region': '{{ search.region }}',
                'currentPlayer': '{{ summoner.id }}'
            }
        }
    }).done(function (data) {
        if($(value).attr('data-gameData') == 'false') {
            $('#' + $(value).attr('id') + ' .panel-body').html('').append(data);

            $(value).attr('data-gamedata', 'true');
            console.log('done');
        }
    });
});
</script>

Der PHP Post rendert mit Twig einen Content und diesen holt sich dann der Ajax Request und fügt diesen dann ein.
Klappt soweit auch, ich seh den Content (das ein oder andere Bild wird nicht geladen) aber, wenn ich via Developer Console von Google Chrome in den "Network" Tab gehe, sehe ich aufeinmal das mehr als 700 Requests gesendet werden und er beendet die Requests nicht... Die Ladezeiten gehen weit über 3-4 Minuten und stoppen einfach nicht....

Woran liegt das? Bzw. woran kann dies liegen.

MfG

Anhang anzeigen 4514

Ich bin mir jetzt nicht 100% sicher, aber ich glaube das liegt daran dass Browser ein festes Limit an gleichzeitigen Requests zu einem Host haben. Das Limit liegt bei ca 6.

Deshalb stehen die anderen Requests in der Warteschleife (Pending) und werden erst ausgeführt wenn die vorherigen 10 ausgeführt wurden.

Habe eben noch gelesen dass PHP ebenfalls nur eine Request behandelt wenn Sessions im Einsatz sind.
 
Zuletzt bearbeitet:
Erstmal ein guter Hinweis,
aber im .done() Befehl (also wenn der Ajax Request fertig ist sofern ich das richtig verstanden habe, bin leider kein Jquery / Ajax / JS Profi), ist dann der Befehl das er den Content hinzufügt.

Der Content ist innerhalb von Paar Sekunden da (Also müsste der Ajax Request abgeschlossen sein), die Ajax Requests (Pending) bleiben aber ca 6-7 Minuten. Zumal es ja keine 746 Requests sein sollten, sondern ledeglich 10 und wenn es ein Limit gibt, sollten dann 2/10 ein Pending haben.

Witziger weise sendet das Script IMMER 746 Requests, warum versteh ich auch nicht...

Falls jemand mal selbst in die Entwickler Konsole schauen will hier der Link zur besagten Seite: https://lolrift.com/Summoner/EUW/Dreister Dachs/Spielverlauf


Aber mal fürs Verständnis.
Wenn ich via $.ajax einen Post an eine Seite schicke, und mir dann den Content dieser Seite via Ajax hole ist das ledeglich 1 Ajax Request, oder? Auch im Network Tab der Entwickler Konsole? Oder werden es mehr Ajax Requests sofern ich beim Content dann z.B. Bilder dabei habe etc?


EDIT:

Habe eben noch gelesen dass PHP ebenfalls nur eine Request behandelt wenn Sessions im Einsatz sind.

Wenn eine Session auf der Aktuellen Seite besteht, oder wenn auf der Seite die Ajax Requestet Sessions bestehen?
 
Zuletzt bearbeitet:
Werbung:
Ich weiß nicht wo der Unterschied zwischen $.ajax und $.get oder $.post ist.

Allerdings habe ich es jetzt anstatt mit $.ajax mit $.get gemacht

Code:
$.get('{{ path('ajax_get') }}', {
            'class': '@lolrift:Match',
            'fnc': 'getMatchData',
            'params': {
                'matchId': $(value).attr('data-matchid'),
                'region': '{{ search.region }}',
                'currentPlayer': '{{ summoner.id }}'
            }
        }).done(function (data) {
            if($(value).attr('data-gameData') == 'false') {
                $('#' + $(value).attr('id') + ' .panel-body').html('').append(data);

                $(value).attr('data-gamedata', 'true');
                console.log('done');
            }
        });

Funktioniert wunderbar!
Es werden ledeglich 10 Requests gemacht, wie gewollt und wenn ein Request erledigt ist, wird der Content in die Seite eingeladen...

Warum er bei $.ajax diese 700+ Requests macht, versteh ich zwar nicht, aber sofern es mit $.get Funktioniert ist für mich alles "gut".
Oder gibt es nachteile gegebenüber $.ajax beim $.get?, den gebrauchten Zweck erfüllen beide.
 
Ich weiß nicht wo der Unterschied zwischen $.ajax und $.get oder $.post ist.

Allerdings habe ich es jetzt anstatt mit $.ajax mit $.get gemacht

Code:
$.get('{{ path('ajax_get') }}', {
            'class': '@lolrift:Match',
            'fnc': 'getMatchData',
            'params': {
                'matchId': $(value).attr('data-matchid'),
                'region': '{{ search.region }}',
                'currentPlayer': '{{ summoner.id }}'
            }
        }).done(function (data) {
            if($(value).attr('data-gameData') == 'false') {
                $('#' + $(value).attr('id') + ' .panel-body').html('').append(data);

                $(value).attr('data-gamedata', 'true');
                console.log('done');
            }
        });

Funktioniert wunderbar!
Es werden ledeglich 10 Requests gemacht, wie gewollt und wenn ein Request erledigt ist, wird der Content in die Seite eingeladen...

Warum er bei $.ajax diese 700+ Requests macht, versteh ich zwar nicht, aber sofern es mit $.get Funktioniert ist für mich alles "gut".
Oder gibt es nachteile gegebenüber $.ajax beim $.get?, den gebrauchten Zweck erfüllen beide.

Hm, denke eigentlich nicht dass es am $.ajax bzw. $.get liegt, da $.get nur ein shorthand für $.ajax ist.
Im Prinzip macht es also das gleiche.
Vermutlich hattest du einen Programmierfehler drin - darauf habe ich jetzt gar nicht geachtet. Dachte du wolltest wirklich 700 Request ausführen :)
 
Zurück
Oben