Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML, AJAX _ Funkcja wykonywana po zakończeniu funkcji.

Napisany przez: Hosiek3210xD 12.06.2022, 09:05:44

Mam funkcje ładującą mi pola radio

  1. function LoadField(div, model, send, path, zusatz = null)
  2. {
  3. if($(div).text().length == 0)
  4. {
  5. $.ajax({
  6. url : '?model='+model,
  7. type : 'POST',
  8. data : send,
  9. dataType : 'json',
  10. success : function(json) {
  11. for (i = 0; i < json.length; i++)
  12. {
  13. $(div).append($("<div>").load(path, json[i]));
  14. }
  15. $(div).append($(zusatz));
  16. },
  17. error: function(json) {
  18. }
  19. });
  20. }
  21. }


Wszystko pięknie ładnie jednak musze zrobic funkcje która zrobi się dopiero po zakonczeniu tej, czyli po załadowaniu pol radio. Obecnie próbuje to w ten sposób.
  1. LoadField('#farbe', 'AufgabeFarbeFahrzeug', 0, module_path_5, zusatz, function(){
  2. console.log('dziala');
  3. });


Wiem ze callback jest w funkcjach standardowych takich jak np .load ale czy mozna podobnie zrobic na wlasno utworzonej funkcji?

czyli load ma np
  1. $('#load').load(mod_path_1, function() {
  2. console.log('dziala');
  3. });


Napisany przez: trueblue 12.06.2022, 10:33:24

Nic nie stoi na przeszkodzie, aby przekazać funkcję jako kolejny argument do funkcji LoadField i wywołać ją w success.

Napisany przez: viking 12.06.2022, 10:33:24

https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Promise

Napisany przez: Hosiek3210xD 12.06.2022, 15:15:53

Cytat(trueblue @ 12.06.2022, 11:33:24 ) *
Nic nie stoi na przeszkodzie, aby przekazać funkcję jako kolejny argument do funkcji LoadField i wywołać ją w success.

Musiałbym przeslac sporą ilość danych... ale udało mi sie jednak podobnie, czyli dorobiłem wlasny callback wywolywany w funkcji.
Mam obecnie teraz tak
  1. function LoadField(div, model, send, path, zusatz = null, callback)
  2. {
  3. if($(div).text().length == 0)
  4. {
  5. $.ajax({
  6. url : '?model='+model,
  7. type : 'POST',
  8. data : send,
  9. dataType : 'json',
  10. success : function(json) {
  11. for (i = 0; i < json.length; i++)
  12. {
  13. $(div).append($("<div>").load(path, json[i], function() {
  14. callback();
  15. }));
  16. }
  17. $(div).append($(zusatz));
  18. },
  19. error: function(json) {
  20. }
  21. });
  22. }
  23. }


a z drugiej strony
  1. LoadField('#farbe', 'AufgabeFarbeFahrzeug', 0, module_path_5, zusatz, function(){console.log('dziala')});


i smiga wszystko smile.gif Ale mimo tego dziekuje za propozycje smile.gif

Cytat(viking @ 12.06.2022, 11:33:24 ) *
https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Promise

Ja pracuje całkowicie w jQuery wiec nie chce mieszać do tego obiektówki JS.

Napisany przez: viking 12.06.2022, 17:50:03

A jquery to nie js? A wiesz że zdarzenia ajaxowe jquery to właśnie promise?

Napisany przez: trueblue 12.06.2022, 20:40:10

Cytat(Hosiek3210xD @ 12.06.2022, 16:15:53 ) *
Musiałbym przeslac sporą ilość danych... ale udało mi sie jednak podobnie, czyli dorobiłem wlasny callback wywolywany w funkcji.

Chyba nie zauważyłeś, że nie zrobiłeś podobnie, ale właśnie dokładnie tak jak sugerowałem.
Wobec powyższego nie ma sensu rozważanie co miałeś na myśli pisząc o "sporej ilości danych".

Napisany przez: Hosiek3210xD 12.06.2022, 22:42:09

Wybaczcie jestem tylko programistą Hobbistycznym.

Nigdy nie miałem styczności ze szkołą w tym kierunku.

W Każdym razie problem rozwiązany i bardzo dziękuje za pomoc.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)