Zacząłem korzystać z prototype i zawartym w nim funkcji sortable.serialize dla posortowania kilku pól. Podstawowe znalezione przeze mnie skrypty działają bardzo sprawnie dla jednego zestawu elementów. Jednak moje potrzeby wzrosły i chciałbym przekazywać dane z dwóch zestawów posortowanych danych. Stworzyłem sobie kod html z dwoma listami ul i li gdzie zawarte są sortowane elementy. Następnie próbowałem utworzyć funkcję pod przycisk w JS, która posortowałaby mi oba zestawy a następnie zwróciła mi do divów odpowiedź. Więc napisałem coś takiego:

  1. window.onload = function() {
  2.  
  3.  
  4. Sortable.create('thelist1',
  5. {
  6. containment:['thelist1','thelist2', 'thelist3'],
  7. constraint:false,
  8. dropOnEmpty:true
  9. }
  10. );
  11.  
  12. //tabelka wyników
  13. Sortable.create('thelist2',
  14. {
  15. containment: ['thelist1','thelist2','thelist3'],
  16. constraint: false,
  17. dropOnEmpty: true
  18.  
  19. }
  20. );
  21.  
  22. Sortable.create('thelist3',
  23. {
  24. containment:['thelist1','thelist2', 'thelist3'],
  25. constraint:false,
  26. dropOnEmpty:true
  27. }
  28. );
  29.  
  30. }
  31. //tala duża funkcja
  32.  
  33. function calosc()
  34. {
  35. //sort2
  36. new Ajax.Updater
  37. (
  38. 'result', 'sort.php',
  39. {
  40. postBody: Sortable.serialize('thelist3')
  41. }
  42. );
  43. //sort2
  44. new Ajax.Updater
  45. (
  46. 'tabelka', 'sort.php',
  47. {
  48. postBody: Sortable.serialize('thelist2')
  49. }
  50. );
  51.  
  52. }


Niestety rozwiązanie ma tą wadę, gdyż aktualizuje się dwukrotnie poprzez wywołanie Ajax.Updater. Więc próbowałem za pomocą jednego poprzez wskazanie parametrów to przesywałania. Miało to tworzyć stringi z posortowanymi wartościami. Jednak zwracało jedynie pierwszy element z sortowania:/
  1. new Ajax.Request
  2. (
  3. url,
  4. {
  5. method: 'post',
  6. postBody: 'first=' + Sortable.serialize('thelist2') + '&second=' + Sortable.serialize('thelist3'),
  7.  
  8.  
  9. }
  10. );

I w obliczu tych faktów mam pytania:) spotkał się ktoś może z tym przypadkiem, że przesyła tylko pierwszy element sortowania? I czy możliwe byłoby przesyłanie w pojedynczym Ajax.Update więcej niż jeden taki postBody - łatwiej się obsługuje takie wygenerowane tablice z posortowanymi danymi winksmiley.jpg