AJAX-Aufruf friert den Browser für eine Weile ein, während er eine Antwort erhält und erfolgreich ausgeführt wird

Ich rufe meinen Webserver über AJAX an, der eine Menge Daten abruft. Ich zeige ein Ladebild, das sich dreht, während der Ajax-Aufruf ausgeführt und dann ausgeblendet wird.

Das, was mir aufgefallen ist, ist, dass alle Browser bei diesem Anruf für ca. 7 Sekunden nicht reagieren. Davon abgesehen dreht sich das Ladebild NICHT so, wie ich es während des Abrufs geplant hatte.

Ich wusste nicht, ob dies passiert oder ob es einen Ausweg gibt, in gewisser Weise weil es eine Gabel gibt (), so dass es eine Sache macht, während sich mein Ladesymbol noch dreht.

Gedanken? Ideen?

Unten ist der Code, den jemand sehen wollte:

$("div.loadingImage").fadeIn(500);//.show();
            setTimeout(function(){
            $.ajax({
                type: "POST",
                url: WEBSERVICE_URL + "/getChildrenFromTelTree",
                dataType: "json",
                async: true,
                contentType: "application/json",
                data: JSON.stringify({
                    "pText": parentText,
                    "pValue": parentValue,
                    "pr_id": LOGGED_IN_PR_ID,
                    "query_input": $("#queryInput").val()
                }),
                success: function (result, textStatus, jqXHR) {
                    //alert("winning");
                    //var childNodes = eval(result["getChildrenFromTelTreeResult"]);
                    if (result.getChildrenFromTelTreeResult == "") {
                        alert("No Children");
                    } else {
                        var childNodes = JSON.parse(result.getChildrenFromTelTreeResult);
                        var newChild;
                        //alert('pText: '+parentText+"\npValue: "+parentValue+"\nPorofileID: "+ LOGGED_IN_PR_ID+"\n\nFilter Input; "+$("#queryInput").val() );
                        //alert(childNodes.length);
                        for (var i = 0; i < childNodes.length; i++) {
                            TV.trackChanges();
                            newChild = new Telerik.Web.UI.RadTreeNode();
                            newChild.set_text(childNodes[i].pText);
                            newChild.set_value(childNodes[i].pValue);
                            //confirmed that newChild is set to ServerSide through debug and get_expandMode();
                            parentNode.get_nodes().add(newChild);
                            TV.commitChanges();
                            var parts = childNodes[i].pValue.split(",");
                            if (parts[0] != "{fe_id}" && parts[0] != "{un_fe_id}") {
                                newChild.set_expandMode(Telerik.Web.UI.TreeNodeExpandMode.ServerSide);
                            }
                        }
                    }
                    //TV.expand();
                    //recurseStart(TV);
                },
                error: function (xhr, status, message) {
                    alert("errrrrror");
                }
            }).always(function () {
                    $("div.loadingImage").fadeOut();
                });
                },500);

Ein Mitarbeiter von mir bemerkte dieses Problem und schlug vor, setTimeout (function () {..}, 500) hinzuzufügen. Das vorliegende Problem wird jedoch nicht behoben, sodass es höchstwahrscheinlich behoben wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage