嘿我在帖子上提交一个数组,其中每个值都是一个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);
...
}
它工作正常,但是如果我尝试在目的地上运行表单验证:
$this->form_validation->set_rules('destinations', 'Destinations', 'required');
我不能再json_decode
价值了,看起来很难,如果我回应它,我可以看到:
{"selected_value":395,"destinations":28867,"type":"cl","name":"name2"}
但解码不起作用且$row
为空。
运行json_last_error
给出:4
和$json
的var_dump给出:
string(143)
"{"selected_value":185,"destinations":38709,"type":"cl","name":"07h00 תקינים"}"
注意:名称值是希伯来语,我举了一个英文示例,以便于阅读。
我尝试通过创建自定义回调函数来解决它,因为我认为所需的实现是问题,但我得到了相同的结果。 有谁知道这个bug或/和它如何修复? 我知道我可以检查它是否规则,但我宁愿使用CI的表单验证。 我正在使用codeigniter 2.1.3,没有升级选项。
答案 0 :(得分:0)
尝试执行json_last_error函数http://www.php.net/manual/en/function.json-last-error.php。它可以帮助您发现错误是什么。还可以尝试对变量执行var_dump并将其发布到此处。
答案 1 :(得分:0)
问题是表单验证仅适用于未找到的帖子数据。你可以像这样做
$row = json_decode($json,true);
$_POST['destinations'] = $row['destinations'];
现在
$this->form_validation->set_rules('destinations', 'Destinations', 'required');
这应该有用。