SJAX-Request bringt alles durcheinander, Reihenfolge des Ablaufs richtig

javascript
sjax

#1

Hallo zusammen

Frage: Wieso wird greift der auskommentierte Teil (wenn er nicht mehr auskommentiert ist!!) nicht und wird vollständig ignoriert??

  • Vor dem SJAX-Request “sendConfiguratonsParameters(…)” sollte dem Button der Text “…, please wait…” angehängt werden, des weiteren soll eine Deaktivierung erfolgen!

      	mySubmitButton.value = "<?php echo SUBMIT_BUTTON_TEXT; ?>, please wait...";	
      	mySubmitButton.disabled = true;
    
  • Nach dem SJAX-Reqquest “sendConfiguratonsParameters(…)” soll der Button wieder den Ursprungstext haben, des Weiteren soll er wieder aktiv werden?

      	mySubmitButton.value = "<?php echo SUBMIT_BUTTON_TEXT; ?>";
      	mySubmitButton.disabled = !mySubmitButton.disabled;
    

…wo bitteschön liegt hier das Problem?!? Kein AJAX, also alles synchron, richtige Reihenfolge der Instruktionen, etc…(?)

Wie schräg ist denn sowas?

Ganzer Code hier:

	    alert("This process can take up to 30 seconds. If the configuration is invalid, the timeout will be reached after <?php echo MAX_EXECUTION_TIME; ?> seconds.");
		
		var mySubmitButton = document.getElementById("<?php echo SUBMIT_BUTTON_NAME; ?>");
		var mySubmitButtonText = mySubmitButton.value;
		
		/*
		mySubmitButton.value = "<?php echo SUBMIT_BUTTON_TEXT; ?>, please wait...";	
		mySubmitButton.disabled = true;
		*/
		
		response = sendConfigurationsParameters("xxx", "xxx", "CH");
		alert(response);
		
		/*
		mySubmitButton.value = "<?php echo SUBMIT_BUTTON_TEXT; ?>";
		mySubmitButton.disabled = !mySubmitButton.disabled;		
		*/

Danke für die Feedback & Grüsse,
Jan


#2

Wüsste niemand was zum Thema…?


#3

Ein synchroner (= blockierender) Request soll nun mal blockieren.

Das “please wait” ist nicht sichtbar, weil der Request die gesamte GUI blockiert, bevor de Browser zum Anzeigen des Texts kommt.
Ist der Request durch, wird der Button wieder auf seinen Ursprungszustand zurückgesetzt, danach bekommt der Browser das erst mit, und man sieht eben den Teil dazwischen nicht.

Lösung ist einfach: Asynchrone Requests nutzen. In Verbindung mit await/async sieht der Code nicht groß anders aus als aktuell.