Voinko soittaa kaksi takaisinkutsutoimintoa yhdessä ajax-puhelussa?

Haluan vain tietää, miten voimme saavuttaa kaksi ajax-takaisinsoittoa yhdellä lähetyslomakkeella. Onko mahdollista? ja miten?

Vastaa

Ei, se ei ole mahdollista. Miksi se olisi? Ajax-soittopyyntö voi palauttaa osan HTML-koodista AJAX-kääreen korvaamiseksi. Jos soitat kahdelle, kumpi Drupal käyttää? Kuinka sen pitäisi päättää? Siksi #ajax["callback"] määritetään funktion nimeksi, ei nimiryhmäksi, yhdellä funktiolla. vältät sellaiset ongelmat.

Jos sinun on soitettava kaksi toimintoa vastauksena AJAX-tapahtumaan, kirjoita takaisinsoitto, joka sisältää logiikan, josta kysyin ensimmäisessä kappaleessa, ja soittotoiminnot, joita tarvitset kyseisestä soittopyynnöstä. .

Vastaa

Et voi tehdä sitä suoraan. Käytä sen sijaan toimintoa, joka kutsuu kaksi muuta toimintoa.

"#ajax" => array( "callback" => "my_callbacks_wrapper", ) ... 

Sitten:

my_callbacks_wrapper($form, $form_state) { $first_callback_processed_form = first_callback($form, $form_state); $second_callback_processed_form = second_callback($first_callback_processed_form, $form_state); return $second_callback_processed_form; } 

Varmista, että soittopyynnöt eivät häiritse.

Kommentit

  • Onko sinulla äänestys. On myös hyödyllistä pitää mielessä, että Ajax-soittopyyntö palauttaa array: return array (' #type ' = > ' ajax ', ' #commands ' = > $ -komennot); Voi olla, että ' on helpompaa soittaa ensimmäiseen takaisinsoittoon ja lisätä sitten joitain arvoja #commands-ryhmään soittamisen sijaan. toinen soittopyyntö. Se voi olla päällekkäinen toiminnallisuus, mutta voi myös olla, että koko soittopyyntöä ei vaadita.

t.

  • Kyllä, olet oikeassa. exmaple on hyvin yksinkertainen, mutta kuten sanot ' d on parempi yhdistää kahden toiminnon tulokset. Mutta pidä mielessä, että kahden toiminnon käyttö on hakkerointi.
  • @tunic – > Onko mahdollista käyttää kahta kääreelementtiä?
  • Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *