Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> parseJSON
Hosiek
post
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Mam problem z funkcją parseJSON - w ajaxie mam zrobioną aktualizacje wiadomosci, po aktualizacji wysyla mi dane i poprzez parseJSON ma wyslac mi dwie informacje, informacja o poprawnosci oraz zaktualizowany tekst, i oczywiscie te dwie rzeczy maja byc w innym miejscu dlatego musze uzyc tej funkcji.

Kod mam "prawie" dzialający, gdzieś jest mały błąd, troche speram w tym kodzie i nie moge go wynalesc..

Jezeli mam tak to działa:
  1. <script type=\"text/javascript\">
  2. jQuery(document).ready(function(){
  3. jQuery(\".button_aktualizuj\").click(function(){
  4. jQuery.ajax({
  5. type:\"POST\",
  6. url:\"aktualizacja.php\",
  7. dataType: \"text\",
  8. data:\"dana=\"+jQuery(\".tekst_biografii\").val(),
  9. success: function(data){
  10. var obj = jQuery.parseJSON('{\"txt\":"tekst wiadomosci", "ajax_result":"1"}');
  11. if( obj.ajax_result === 1 )
  12. {
  13. jQuery('.wynik_aktualizacji_ajax_jquery').html(obj.txt);
  14. }
  15. else
  16. {
  17. jQuery('.wynik_aktualizacji').html(obj.txt);
  18. }
  19. },
  20. error: function(){
  21. alert('Blad z wysylaniem danych na serwer');
  22. }
  23. });
  24. });
  25. });
  26. </script>


Jednak w skrypcie powyzej podałem zmienna do parsowania a ma byc ona wyczytana z "data", czyli mniej wiecej tak:

  1. <script type=\"text/javascript\">
  2. jQuery(document).ready(function(){
  3. jQuery(\".button_aktualizuj\").click(function(){
  4. jQuery.ajax({
  5. type:\"POST\",
  6. url:\"aktualizacja.php\",
  7. dataType: \"text\",
  8. data:\"dana=\"+jQuery(\".tekst_biografii\").val(),
  9. success: function(data){
  10. var obj = jQuery.parseJSON('data');
  11. if( obj.ajax_result === 1 )
  12. {
  13. jQuery('.wynik_aktualizacji_ajax_jquery').html(obj.txt);
  14. }
  15. else
  16. {
  17. jQuery('.wynik_aktualizacji').html(obj.txt);
  18. }
  19. },
  20. error: function(){
  21. alert('Blad z wysylaniem danych na serwer');
  22. }
  23. });
  24. });
  25. });
  26. </script>


dane do "data" są pobierane na pewno gdyż moje je wyczytac funkcją jQuery('.wynik_aktualizacji').html(data); co daje mi taki text:
Cytat
{"ajax_result":0,"txt":"tekst"}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Pawel_W
post
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


po co się bawić skoro możesz ustawić typ odebranych danych jako json i dostać gotowy obiekt...
Go to the top of the page
+Quote Post
Arcioch
post
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


Pawel_W dobrze mówi (IMG:style_emoticons/default/wink.gif) zmień typ z dataType: "text" na dataType: "json" i potem obierasz gotowego json odwołując się tak do niego data.txt (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Hosiek
post
Post #4





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(Pawel_W @ 2.10.2012, 18:59:57 ) *
po co się bawić skoro możesz ustawić typ odebranych danych jako json i dostać gotowy obiekt...


próbowałem, wtedy robi sie error i wywala mi to:

  1. error: function(){
  2. alert('Blad z wysylaniem danych na serwer');
  3. }


Ten post edytował Hosiek 2.10.2012, 18:10:18
Go to the top of the page
+Quote Post
Arcioch
post
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


Pokaż jak wysyłasz dane z php (IMG:style_emoticons/default/wink.gif) pewnie przez echo (IMG:style_emoticons/default/wink.gif) musisz wysłać używająć echo json_encode() (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Hosiek
post
Post #6





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(Arcioch @ 2.10.2012, 19:11:50 ) *
Pokaż jak wysyłasz dane z php (IMG:style_emoticons/default/wink.gif) pewnie przez echo (IMG:style_emoticons/default/wink.gif) musisz wysłać używająć echo json_encode() (IMG:style_emoticons/default/smile.gif)



równiez mam, oto kod:

  1. $ostatnio_query5 = $db->simple_select("biografia", "OSTATNIO_MODYFIKOWANA", "POSTAC='{$nick_postaci}'");
  2. $ostatnio_query1 = $db->fetch_array($ostatnio_query5);
  3. $ostatnio_edytowany = $ostatnio_query1['OSTATNIO_MODYFIKOWANA'];
  4. $data_edycji = date('Y-m-d');
  5. $godzina_edycji = date("H:i:s");
  6. $modyfikowana = $data_edycji . " " . $godzina_edycji;
  7. $ostatnio_edytowany = explode(" ", $ostatnio_edytowany);
  8. $czas = new DateTime($ostatnio_edytowany[1]);
  9. $czas->modify('+30 second');
  10. if($czas->format('H:i:s') > $godzina_edycji)
  11. {
  12. $out['ajax_result'] = 0 ;
  13. $out['txt'] = "musisz odczekac 30 sekund przed ponowną aktualizacją textu" ;
  14. }
  15. else
  16. {
  17. $db->update_query("biografia", array('BIOGRAFIA' => $edytowana_biografia, 'OSTATNIO_MODYFIKOWANA' => $modyfikowana, 'MODYFIKACJA' => '1'), "POSTAC='{$nick_postaci}'");
  18. $query5 = $db->simple_select("biografia", "*", "POSTAC='{$nick_postaci}'");
  19. $biografia_pos = $db->fetch_array($query5);
  20. $zawartosc_biografi = $biografia_pos['BIOGRAFIA'];
  21. $out['ajax_result'] = 1 ;
  22. $out['txt'] = $zawartosc_biografi ;
  23.  
  24. }
  25. echo json_encode( $out ) ;


jak pisałem dane mi wysyłą dobrze gdyz moge je odczytac w skrypcie uzywając "data" bez uzycia json

Ten post edytował Hosiek 2.10.2012, 18:17:09
Go to the top of the page
+Quote Post
Arcioch
post
Post #7





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


Możesz to pokazać gdzieś live aby sprawdzić niektóre rzeczy firebugiem (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Hosiek
post
Post #8





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


login: ****
haslo:****
link: *****

Obecnie bo kliknieciu "Aktualizuj" powinny pojawic sie zaaktualizowane dane z obj.txt bądź jezeli nie minelo 30 sekund to równiez lecz w innym divie.

Ten post edytował Hosiek 2.10.2012, 20:30:46
Go to the top of the page
+Quote Post
redeemer
post
Post #9





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Cytat
  1. var obj = jQuery.parseJSON('data');

A nie przypadkiem:
  1. var obj = jQuery.parseJSON(data);
Go to the top of the page
+Quote Post
Hosiek
post
Post #10





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(redeemer @ 2.10.2012, 19:27:38 ) *
A nie przypadkiem:
  1. var obj = jQuery.parseJSON(data);

Również próbowałem - zmienilem teraz jak piszesz i dalej nic.
Go to the top of the page
+Quote Post
Arcioch
post
Post #11





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


Po pierwsze popraw to (IMG:style_emoticons/default/wink.gif)

  1. <script type="text/javascript">
  2. jQuery.noConflict();
  3. <script type="text/javascript">
  4. $.noConflict();
  5. <script type="text/javascript" src="http://[ciach]/five/jscripts/aktualizacja_bazy.js?ver=1600"></script>


Po drugie łącznie prototype i jQuery nie jest za dobrym roziwązaniem (IMG:style_emoticons/default/wink.gif)
Po trzecie json dostaje coś więce (IMG:style_emoticons/default/wink.gif) Tak przynajmniej pokazuje firebug (IMG:style_emoticons/default/wink.gif)

  1. {"ajax_result":1,"txt":"testowa biografia asdasddsa"}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Go to the top of the page
+Quote Post
Hosiek
post
Post #12





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(Arcioch @ 2.10.2012, 19:36:09 ) *
Po pierwsze popraw to (IMG:style_emoticons/default/wink.gif)

  1. <script type="text/javascript">
  2. jQuery.noConflict();
  3. <script type="text/javascript">
  4. $.noConflict();
  5. <script type="text/javascript" src="http://[ciach]/five/jscripts/aktualizacja_bazy.js?ver=1600"></script>


Po drugie łącznie prototype i jQuery nie jest za dobrym roziwązaniem (IMG:style_emoticons/default/wink.gif)
Po trzecie json dostaje coś więce (IMG:style_emoticons/default/wink.gif) Tak przynajmniej pokazuje firebug (IMG:style_emoticons/default/wink.gif)

  1. {"ajax_result":1,"txt":"testowa biografia asdasddsa"}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

jezeli ten kod ułoze inaczej skrypty mi nie działają, chyba ze faktycznie coś na mieszkałem to powiesz cos konkretniej ?

Co do wysyłania do json, to nie mam pojecia dlatego to tak wysyla, wygladało by na to ze dostaje sie do heada ze to wyswietla - mialem wyswietlanie tego jak uzyłem zamiast .html(obj.txt) chyba head albo headbody czy jakos tak. cała akcja jest wrzucona do tego samego pliku lecz jako action= moze dlatego ?
Już wiem skąd ten kod sie bierze, jest on zdefiniowany w mybb, w szablonie htmldoctype - całkowite usuniecie go powoduje wstawienie innego, jakiegos zastepczego - ale wydaje mi sie ze moze on byc potrzebny wiec nalezy znalesc rozwiazanie które usunie go tylko z tej podstrony

Ten post edytował webdice 3.10.2012, 07:30:08
Go to the top of the page
+Quote Post
Arcioch
post
Post #13





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


Spróbuj dać tak (IMG:style_emoticons/default/wink.gif)

  1. <script type="text/javascript">
  2. jQuery.noConflict();
  3. $.noConflict();
  4. <script type="text/javascript" src="http://[ciach]/five/jscripts/aktualizacja_bazy.js?ver=1600"></script>

Json nie działa przez ten dodatkowy wysyłany tekst (IMG:style_emoticons/default/wink.gif) Ponieważ funkcja zwraca "non-whitespace character after JSON data" (IMG:style_emoticons/default/wink.gif)
Ps zobacz PW (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Hosiek
post
Post #14





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(Arcioch @ 2.10.2012, 20:07:31 ) *
Spróbuj dać tak (IMG:style_emoticons/default/wink.gif)

  1. <script type="text/javascript">
  2. jQuery.noConflict();
  3. $.noConflict();
  4. <script type="text/javascript" src="http://[ciach]/five/jscripts/aktualizacja_bazy.js?ver=1600"></script>

Json nie działa przez ten dodatkowy wysyłany tekst (IMG:style_emoticons/default/wink.gif) Ponieważ funkcja zwraca "non-whitespace character after JSON data" (IMG:style_emoticons/default/wink.gif)
Ps zobacz PW (IMG:style_emoticons/default/wink.gif)

Tak jak mówiłem, tym sposobem nie działają mi funkcje edytora textu, tzn lista funkcji typu "wysrodkowanie" "kolor" itd..


Odbyła sie rozmowa z Arciochem i raczej rozwiazałem problem - jeszcze przepisze troche kodu - dzieki wszystkim.

Ten post edytował webdice 3.10.2012, 07:30:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 12:27