2014-01-22 2 views
2

Эй я массив завершения заполнения на пост, где каждое значение представляет собой строку JSON, как это:Codeigniter форма проверки разрывает значение JSon

Array 
(

    [destinations] => Array 
     (
      [0] => {"selected_value":185,"destinations":38709,"type":"cl","name":"name1"} 
      [1] => {"selected_value":395,"destinations":28867,"type":"cl","name":"name2"} 
     ) 

) 

Теперь, когда я его расшифровать:

foreach($destinations as $json){ 
      $row = json_decode($json,true); 
    ... 
    } 

It работает отлично, однако если я пытаюсь и форма проверки запуска на направления:

$this->form_validation->set_rules('destinations', 'Destinations', 'required'); 

Я больше не могу json_decode значение, жесткий, кажется, будет хорошо, если я повторяю это я вижу:

{"selected_value":395,"destinations":28867,"type":"cl","name":"name2"} 

Но расшифровывает не работает и $row равна нулю.

Запуск json_last_error дает: 4 и var_dump из $json дает:

string(143) 
"{"selected_value":185,"destinations":38709,"type":"cl","name":"07h00 תקינים"}" 

Примечание: имя значения в древнееврейском, я привел пример в английском, так легче читать.

Я пробовал работать с ним, создав пользовательскую функцию обратного вызова, потому что я думал, что проблема в требуемой является проблемой, но я получил те же результаты. Кто-нибудь знает эту ошибку или/и как ее можно исправить? Я знаю, что могу просто проверить его, но я предпочел бы использовать проверку формы CI. Я использую codeigniter 2.1.3 без возможности обновления.

ответ

0

Попробуйте выполнить функцию json_last_error http://www.php.net/manual/en/function.json-last-error.php. Это может помочь вам узнать, что такое ошибка. Также попробуйте сделать var_dump для переменной и разместите ее здесь.

+0

Это должен быть комментарий, и я написал его: «Но декодирование не работает, а $ row равно null». –

+0

Запуск функции json_last_error после $ row = json_decode ($ json, true); строка поможет вам обнаружить ошибку. –

+0

Ошибка: 4 –

0

Проблема заключается в том, что проверка формы применяется только к почтовым данным, которые не найдены. Вы можете сделать альтернативу как этот

$row = json_decode($json,true); 

$_POST['destinations'] = $row['destinations']; 

А теперь

$this->form_validation->set_rules('destinations', 'Destinations', 'required'); 

Это должно работать.

+1

Проверка формы выполняется до того, как я попытаюсь ее декодировать, что декодирование выполняется только в том случае, если данные найдены. $ json - это элемент в $ _POST ['destination'], я не понял ваше решение ... –

+0

Вы должны увидеть ответ @HashemQolami.также ваш вопрос расплывчато получил 'destination' изнутри json –

+0

Я не видел ответа @HashemQolami, и мой вопрос - это упрощение, а $ $ - это $ _POST ['destination'] ... –

Смежные вопросы