Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> валидность/распарсить Json 
V
    Опции темы
gcc
Дата 12.4.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



Код

add "unexpected end of string while parsing JSON string, at character offset 562 (before "(end of string)") at /home


иногда когда передается текст, выводиться такая ошибка, тогда когда json пытается распарсить текст

с кодировкой и с текстом все нормально...

я так понимаю что тут символы в тексте которые мешают распарсить... можно ли как-то  распарсить проблемный json?
(если вставить обычный большой текст с формы с русскмими буквами, то все передается номрально)

тут я не увидел пободного ничего http://search.cpan.org/~makamaka/JSON-2.21...ON.pm#from_json b в гугле не нашел как это решить http://www.google.com.ua/#hl=uk&q=unex...1e4a221592c4a20


делаю так:
Код

use JSON;
use Encode;

    my $json_param =  decode_json Encode::encode( 'utf8', $c->request->params->{jsonData} )
      if ( $c->request->params->{jsonData} );

....

 # out json:
sub off_json : Privat {

    my ( $self, $c, $user_details, $decode ) = @_;

    if ($decode) {
        $user_details->{text_cm} =
          Encode::decode( 'utf8', $user_details->{text_cm} )
          if ( $user_details->{text_cm} );
        $user_details->{useranme} =
          Encode::decode( 'utf8', $user_details->{useranme} )
          if ( $user_details->{useranme} );
        $user_details->{name_guest} =
          Encode::decode( 'utf8', $user_details->{name_guest} )
          if ( $user_details->{name_guest} );
    }
    my $json = to_json($user_details);

    $c->response->content_type("application/json");
    $c->response->body($json);

}





Это сообщение отредактировал(а) gcc - 12.4.2010, 11:34
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 14.4.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



я таки нашел

казалось бы элементарный текст
Код

;oo;o


и выводит:
Код

add "unexpected end of string while parsing JSON string, at character offset 9 (before "(end of string)") at /home/


как это исправить?
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 15.4.2010, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



есть
Код

....
    <script type="text/javascript" src="/dev/jquery-1.3.2.js"></script>  
 
<script type="text/javascript" src="/latest/jquery.json-2.2.js"></script>
....
 
        var formData = {
             "id_last":$("#last_id").html()
           , "array_new":array
                                                           
        };
 
        
        $.ajax({
      type: "POST",
 
      url: "/chat/load/1",
      data:'jsonData=' + $.toJSON(formData),
...... 


я вот я пробовал

Код

        var formData = {
             "text":+"+$("input#text").val()+" 
                                                          
        };


но не получается, вообще не работает...

какие тут варианты на php тоже самое будет?
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 15.4.2010, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



я вот нашел аналогичную тему http://community.livejournal.com/ru_perl/345451.html
(там ошибка такая, то проблема другая)

там написано, что ключи должны быть строками,  тоже

Код
 {0: "bla-bla", 23: "bla"} 

Код
 {"0": "bla-bla", "23": "bla"} 


но что-то я не могу понять как мне тут сделать? (или может проболема вообще не в этом...)
Код
        var formData = {
             "text": +"+ $("input#text").val() + " 
                                                          
        };

...так и аналогично не работает вообще...

просто я текст раньше в json с форм не передавал раньше, не видел смысла, сейчас сделал, но не знал что будет геморой такой...


===


  ;oo;o это не json, это то что ввести в поле textarea или с input
а потом  $.toJSON(formData) это запакует


вот в отладке в фрейворке

Код

info] *** Request 846 (0.257/s) [62425] [Thu Apr 15 08:59:05 2010] ***
[debug] Body Parameters are:
.-------------------------------------+--------------------------------------.
| Parameter                           | Value                                |
+-------------------------------------+--------------------------------------+
| jsonData                            | {"text":"������������������"}        |
'-------------------------------------+--------------------------------------'
[debug] "POST" request for "chat/add/1" from "127.0.0.1"
[debug] Found sessionid "1d490742d9bad03df7ed1c8b31baca40dfd26dc7" in cookie
[debug] Restored session "1d490742d9bad03df7ed1c8b31baca40dfd26dc7"
[debug] Path is "chat/add"
[debug] Arguments are "1"
[info] Request took 0.350099s (2.856/s)
.------------------------------------------------------------+-----------.
| Action                                                     | Time      |
+------------------------------------------------------------+-----------+
| /begin                                                     | 0.006399s |
| /auto                                                      | 0.000740s |
| /chat/add                                                  | 0.286340s |
|  -> /friends/found_friends                                 | 0.003768s |
|  -> /chat/count_add                                        | 0.019538s |
|  -> /comments_api/off_json                                 | 0.003737s |
| /end                                                       | 0.001017s |
'------------------------------------------------------------+-----------'

[info] *** Request 847 (0.258/s) [62425] [Thu Apr 15 08:59:05 2010] ***
 


я передаю text, значение ������������������ с ним все номрально!

а вот я вставил 
Код
dfgdfgdfg;
 в textarea

получается такая фигня:
(Json где-то оборвался, получается??)
Код

[info] *** Request 858 (0.252/s) [62425] [Thu Apr 15 09:00:59 2010] ***
[debug] Body Parameters are:
.-------------------------------------+--------------------------------------.
| Parameter                           | Value                                |
+-------------------------------------+--------------------------------------+
| jsonData                            | {"text":"dfgdfgdfg                   |
'-------------------------------------+--------------------------------------'
[debug] "POST" request for "chat/add/1" from "127.0.0.1"
[debug] Found sessionid "1d490742d9bad03df7ed1c8b31baca40dfd26dc7" in cookie
[debug] Restored session "1d490742d9bad03df7ed1c8b31baca40dfd26dc7"
[debug] Path is "chat/add"
[debug] Arguments are "1"
[error] Caught exception in MyApp::Controller::chat->add "unexpected end of string while parsing JSON string,
 at character offset 18 (before "(end of string)") at /home/x0/data4/MyApp/script/../lib/MyApp/Controller/chat.pm line 48"
[info] Request took 0.141275s (7.078/s)
.------------------------------------------------------------+-----------.
| Action                                                     | Time      |
+------------------------------------------------------------+-----------+
| /begin                                                     | 0.006554s |
| /auto                                                      | 0.000691s |
| /chat/add                                                  | 0.007087s |
| /end                                                       | 0.000865s |
'------------------------------------------------------------+-----------'


Это сообщение отредактировал(а) gcc - 15.4.2010, 09:16
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 17.4.2010, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



я так и не решил...

можно ли получить строку в которой данные POST запроса?

т.е. парсер Catalyst (CGI & mod_perl) отрубает всё после символа ';', как видно с предыдущего поста в отладке, по этому решил распарсить самостоятельно примерно, так
Код

map { s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $_ } split /[&;=]/,
$c->req->body;


но $c->req->body почему-то пустое все время...

но как получить весь POST запрос одной строкой? как это исправить?

Это сообщение отредактировал(а) gcc - 17.4.2010, 14:43
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 20.4.2010, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



блин, проблема простая и была тут

Код
     var formData = {
             "text":$("input#text").val()                                                      
        };
 
         
        $.ajax({
      type: "POST",
      url: "/chat/add/1",
      data:'jsonData=' + encodeURIComponent( $.toJSON(formData) ),
      processData: false,          
      dataType: "json",  
      timeout: 3000,  
      success: function(msg) {  
  

я это encodeURIComponent использовал, только по другому, не там где надо...  по этому оно и не работало оказывается, и в гугле пободного не видел вообще!!... только вчера нашел.... 



PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.