Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> parseJSON
Hosiek
post 2.10.2012, 17:53:00
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 2.10.2012, 17:59:57
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 2.10.2012, 18:07:37
Post #3





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

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


Pawel_W dobrze mówi wink.gif zmień typ z dataType: "text" na dataType: "json" i potem obierasz gotowego json odwołując się tak do niego data.txt wink.gif
Go to the top of the page
+Quote Post
Hosiek
post 2.10.2012, 18:10:02
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 2.10.2012, 18:11:50
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 wink.gif pewnie przez echo wink.gif musisz wysłać używająć echo json_encode() smile.gif
Go to the top of the page
+Quote Post
Hosiek
post 2.10.2012, 18:13:45
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 wink.gif pewnie przez echo wink.gif musisz wysłać używająć echo json_encode() 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 2.10.2012, 18:23:16
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 wink.gif
Go to the top of the page
+Quote Post
Hosiek
post 2.10.2012, 18:27:36
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 2.10.2012, 18:27:38
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 2.10.2012, 18:30:35
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 2.10.2012, 18:36:09
Post #11





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

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


Po pierwsze popraw to 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 wink.gif
Po trzecie json dostaje coś więce wink.gif Tak przynajmniej pokazuje firebug 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 2.10.2012, 18:41:06
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 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 wink.gif
Po trzecie json dostaje coś więce wink.gif Tak przynajmniej pokazuje firebug 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 2.10.2012, 19:07:31
Post #13





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

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


Spróbuj dać tak 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 wink.gif Ponieważ funkcja zwraca "non-whitespace character after JSON data" wink.gif
Ps zobacz PW wink.gif
Go to the top of the page
+Quote Post
Hosiek
post 2.10.2012, 19:11:54
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 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 wink.gif Ponieważ funkcja zwraca "non-whitespace character after JSON data" wink.gif
Ps zobacz PW 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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:14