【发布时间】:2012-05-21 17:22:58
【问题描述】:
我是 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",
网址:this_url,
数据类型:'json',
数据:post_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 数组? (我已经强制 mimetype 到 application/json 没有效果)
【问题讨论】:
-
console.log(data) 和 console.log($("id_test").empty()) 给你什么?
-
在成功方法中尝试调试console.log(data)等数据,如果显示任何结果请告诉我
-
我现在在家。我会尽快尝试两者!谢谢!
-
也许您的代码中只是一个错字? view_data['test'] = 'ajax'; $view_data 缺少 $ 符号
-
几乎可以肯定这是一个剪切/粘贴错字..但我明天早上会仔细检查:)
标签: php jquery ajax json codeigniter