在fire bug中我查看了我的jquery post请求参数,就像这样
adults 1
applicants[] [object Object]
attendees 1
children 0
在这个帖子请求中,名为 applicants 的数组包含json对象,我希望迭代并在我的codeigniter控制器中提取值。 json字符串可能看起来像这样
({attendees:"2",
adults:"2",
children:"0",
grptype:"2",
'applicants[]':[{firstname:"John", lastname:"Doe", age:"33", allergies:"true", diabetic:"true", lactose:"false", note:"nuts"}, {firstname:"Jane", lastname:"Doe", age:"34", allergies:"true", diabetic:"false", lactose:"false", note:"pollen"}]
})
看看上面的申请人[],看看我有两个人的信息作为json对象。我不确定如何访问我的控制器中的数据。看到这个
$applicants = $this->input->post('applicants');
$this->output->append_output("<br/>Here: " . $applicants[0].firstname );
我在想$申请人[0] woild引用json对象,我可以根据需要提取值。不确定帽子我做错了。谢谢你们。
修改 所以我调整了我的json,看起来像这样
adults 2
applicants[] {firstname:"John", lastname:"Doe", age:"23", allergies:"true", diabetic:"true", lactose:"false", note:"nuts"}
applicants[] {firstname:"Jane", lastname:"Doe", age:"23", allergies:"false", diabetic:"false", lactose:"false", note:""}
attendees 2
children 0
现在我仍然收到错误说
**Message: json_decode() expects parameter 1 to be string, array given**
有什么想法吗?
编辑2
好的mu数据现在像这样liiks
adults 1
applicants[] {"firstname": "John", "lastname": "Doe", "age": "34", "allergies": "true", "diabetic": "true", "lactose": "false", "note": "nuts"}
attendees 1
children 0
在控制器ID中执行此操作
$applications = $this->input->post('applicants');
foreach ( $applications as $item)
{
$item = json_decode($item, true);
$this->output->append_output(print_r($item));
}
这是该逻辑的结果
Array
(
[firstname] => John
[lastname] => Doe
[age] => 34
[allergies] => true
[diabetic] => true
[lactose] => false
[note] => nuts
)
不确定我做错了什么,无论我做什么来访问dater我都会收到错误,因为我无法像这样访问它。如何提取值?
答案 0 :(得分:3)
您必须使用
在服务器上对其进行解码$applications = json_decode($this->input->post('applicants'), true);
因此,它将成为一个关联数组,您可以像array
一样使用它,而json_decode中没有第二个参数(true),json
将被转换为一个对象。在解码之前,它只是string
(json/java script object notation
字符串)。
更新:由于它已经是一个对象数组,因此您无需使用json_decode
,只需在view
中循环播放数组
foreach($applicants as $item)
{
echo $item->firstname . '<br />';
echo $item->lastname . '<br />';
// ...
}
根据编辑2,它应该作为数组访问
echo $item['firstname'] . '<br />'
答案 1 :(得分:0)
试试这个plz
$applicants = $this->input->post('applicants');
$json_output = json_decode($applicants );
foreach ( $json_output as $person)
{
$this->output->append_output("<br/>Here: " . $person->firstname );
}
或
$json_output = json_decode($applicants,TRUE );
echo $json_output[0][firstname] ;