Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Ajax][jQuery][Zend Framework]
Forum PHP.pl > Forum > XML, AJAX > AJAX
orideith
Witam Was, mam taki mały problem i nie wiem gdzie szukać przyczyny.

Mam taki kod na wysyłanie / odbieranie danych z ajaxa
  1. $('.order_set a').on("click", function() {
  2. var $this, id, status;
  3. $this = $(this);
  4. id = $this.data('id');
  5. status = $this.data('order_status');
  6. $.ajax({
  7. url: '/ajax/orderstatus',
  8. type: 'post',
  9. dataType: "html",
  10. data: {
  11. id: id,
  12. status: status
  13. },
  14. beforeSend: function() {
  15. $('.sorting_disabled').html('<img src="/images/ajax-loader.gif" />');
  16. },
  17. success: function(data) {
  18. $('.sorting_disabled img').fadeOut(200);
  19. var json = $.parseJSON(data);
  20. console.log(json);
  21.  
  22. },
  23. fail: function(jqXHR) {
  24. var json = $.parseJSON(jqXHR.responseText);
  25. console.log(json);
  26. }
  27. });
  28. });


Wszystko działa o ile dataType: jest jako html, jeżeli ustawię jako json to mam komunikat w stylu


Jak widać nagłówki są ok, dane niby też
Kod na wyplucie wygląda tak

  1. public function orderstatusAction() {
  2. if ($this->_request->isXmlHttpRequest()) {
  3. $order_db = new models_order();
  4. $status = $this->_getParam('status');
  5. $id = $this->_getParam('id');
  6. $this->getResponse()
  7. ->setHeader('Content-Type', 'application/json')
  8. ->setBody(json_encode(array('a' => 'b')))
  9. ->sendResponse();
  10. }
  11. }



Jak dam dane jako html to mogę spokojnie się do jsona odwoływać poprzez obiekt, dane sprawdzałem też poprzez http://jsonlint.com/ i oczywiście tablica jest ok.
Co robię nie tak? co może być przyczyną, mogę zostawić html i nic to w sumie nie zmieni ale jednak chciałbym to zrobić zgodnie ze sztuką.

Będę wdzieczny za jakiekolwiek informacje.

Pozdrawiam
Oskar


nospor
$.parseJSON(data);
No ale po co potem jeszcze jsona parsujeszz jsonem? SKoro masz json to ustaw dla ajaxa, ze wynik bedzie json i jquery samo ci zwroci json a ty juz nic nie musisz parsowac
orideith
Z jednej strony masz racje jak dam
  1. success: function(data) {
  2. console.log(data);
  3. },

to data w console daje mi {"a":"b"} jednak jak chce się odwołać czyli daje data.a to mi zwraca undefined co robie nie tak?
nospor
Cytat
to data w console daje mi {"a":"b"}

To ci zle daje bo daje ci tekst a nie obiekt. Jakbys poprawnie ustawil parametry wywolania AJAX, jak ci pisalem, to bys dostal obiekt a nie tekst.
orideith
Masz rację, nie ustawiłem jsona w datatype z pośpiechu i się wkurzam niepotrzebnie, jeszcze raz dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.