私は Php/Jquery プログラミングが初めてで、Jquery AJAX 呼び出しから JSON フィールドにアクセスする方法を考えようとして一日中過ごしました。
私は codeingniter を使用しています。私のコントローラーでは、関連するコードは次のとおりです。
if( $this->input->is_ajax_request())
{
$view_data['test'] = 'ajax';
echo json_encode( $view_data );
}
else
{
$view_data['test'] = 'not ajax';
$data = array(
'javascripts' => array(
'js/jquery.dataTables.js',
'js/zona/dataTable_zone.js',
'js/zona/gestisci_zone.js',
'js/jquery-ui-1.8.20.custom.min.js' ,
'js/jquery.ui.error-panel.js',
'js/jquery.validate.min.js' ,
'js/localization/messages_it.js'
),
'style_sheets' => array(
'css/south-street/jquery-ui-1.8.20.custom.css' => 'screen',
'css/jquery.dataTables.css' => 'screen'
),
'content' => $this->load->view( 'zona/gestisci_zone', $view_data, TRUE )
);
$this->load->view( $this->template, $data);
}
` ビューでは、関連するコードは
<div id="id_test"> <p><?php echo $test ?> </p></div>
そしてJavaScriptファイルでは、関連するAJAXコードは
`$.ajax( { type:"POST", url:this_url, dataType: 'json', data: post_data,
success: function(data){
console.log(data);
console.log($("id_test").empty());
$("#id_test").empty().append(data.test);
},
error: function(data){
alert("error");
);`
このようにして、AJAX出力はArray{"test":"ajax"}
私の予想される動作は $("#id_test").empty().append(data.test);
、AJAX 出力を使用すると ajax という単語だけになるということですが、空白の div が返されるだけです。多くのモードでアクセスしようとしましたが、これを達成する方法がわかりませんでした。たぶん、経験不足のために何かが欠けているか、間違ったアプローチを使用しています。アドバイスをお願いします。:)
少しデバッグした後、プレーンテキスト/偽のJSONの問題であるという結論に達しました。json配列ではなく、配列のテキスト表現のみを返しています。さて、コントローラーから正しいjson配列を送信するにはどうすればよいですか? (私はすでに効果なしでアプリケーション/jsonにMIMEタイプを強制しました)