2

火災のバグでは、jquery ポスト リクエスト パラメータを表示します。次のようになります。

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オブジェクトとして2人の情報があることを確認してください。コントローラーのデータにアクセスする方法がわかりません。これを見る

$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

わかりましたデータはこのようになりました

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_decodearray2 番目の引数 (true) なしで、 のように使用できます。デコードするまで、それは単なる( 文字列) です。jsonstringjson/java script object notation

更新:すでにオブジェクトの配列であるため、使用する必要はありません。配列を好きなようjson_decodeにループするだけですview

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

edit 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 に答える