2

在火灾错误中,我查看我的 jquery 发布请求参数,就像这样

adults            1
applicants[]    [object Object]
attendees   1
children    0

在这篇文章请求中,名为申请人的数组包含我想要迭代并在我的 codeigniter 控制器中提取值的 json 对象。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 );

我在想 $applicants[0] 会引用 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 数据现在像这样

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
)

不知道我做错了什么,无论我做什么来访问约会器,我都会收到一个错误,大意是我无法像那样访问它。如何提取值?

4

2 回答 2

3

您必须使用在服务器上对其进行解码

$applications = json_decode($this->input->post('applicants'), true);

因此,它将成为一个关联数组,您可以像使用它一样使用它,而json_decodearray没有第二个参数(true),它将被转换为一个对象。在你解码之前,它只是一个( 字符串)。jsonstringjson/java script object notation

更新:因为它已经是一个对象数组,所以你不需要使用,只需在你喜欢json_decode的数组中循环view

foreach($applicants as $item)
{
     echo $item->firstname . '<br />';
     echo $item->lastname . '<br />';
     // ...
}

根据编辑2,它应该作为数组访问

echo $item['firstname'] . '<br />'
于 2013-09-29T02:10:25.043 回答
0

试试这个

$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] ;
于 2013-09-29T02:05:29.547 回答