我在jQuery中有一个由AJAX返回的数组。我想迭代AJAX成功结果并从JSON数组中获取单个值。数据以字符串的形式返回。我正在使用jQuery的$.ajax
从服务器上获取它,这很好。
//my View
$.ajax({
type: "POST",
url:"http://localhost:8888/CodeIgniter/index.php/user/usercontroller/search",//controller function
cache: false,
data:{"responsible1":res1},
success: function(data21) {
alert(data21);
});
});
//data 21 alerts the following {"taskname":"Coding","projname":"Easy Wedding"} {"taskname":"Maintain","projname":"Easy Wedding"} {"taskname":"Flow Chart","projname":"Fnn"} {"taskname":"development in ","projname":"Fnn"} {"taskname":"flow chart","projname":"Art gallery"}
如何仅访问个人taskname
和projectname
或如何将data21
转换为数组
答案 0 :(得分:5)
只需将dataType: "json"
添加到您的请求中,您就会将数据作为对象获取,但如果您将返回数据放入这些括号中,这将会起作用:[]
否则使用此
data21 = $.parseJSON('[' + data21.replace(/\"}/g, '"},').replace(/,$/, "") + ']');
console.log(data21);
答案 1 :(得分:1)
success: function(data) {
data = jQuery.parseJSON(data);
//now you can access the individual keys like alert(data.taskname+ " : "+data.projname)
alert(data.taskname+ " : "+data.projname);
});
答案 2 :(得分:0)
只要JSON有效,您就应该能够使用索引访问对象数组。
如果这是返回的数据:
[
{"taskname":"Coding","projname":"Easy Wedding"},
{"taskname":"Maintain","projname":"Easy Wedding"},
{"taskname":"Flow Chart","projname":"Fnn"},
{"taskname":"development in ","projname":"Fnn"},
{"taskname":"flow chart","projname":"Art gallery"}
]
然后这将起作用:
$.ajax({
type: "POST",
url: "http://localhost:8888/CodeIgniter/index.php/user/usercontroller/search",
cache: false,
dataType: "json",
data: { "responsible1":res1 },
success: function(data) {
alert(data[0].taskname);
});
});
答案 3 :(得分:0)
可能会帮助你。
var t = {
'rows': [
{"taskname":"Coding","projname":"Easy Wedding"},
{"taskname":"Maintain","projname":"Easy Wedding"},
{"taskname":"Flow Chart","projname":"Fnn"},
{"taskname":"development in ","projname":"Fnn"},
{"taskname":"flow chart","projname":"Art gallery"}
]
}
$.each(t.rows,function(index,value){
for(var i in value){
alert(i+' -> '+value[i]);
}
});
这是我认为读取json数据的方法。其中t包含json数据
编辑:
我不熟悉codeigniter,但是如果你将下面的代码放在普通的php文件中并运行它,你会发现你正在寻找的结果。
<?php
$arr = array();
$arr[] = array('taskname'=>'Coding','projname'=>'Easy Wedding');
$arr[] = array('taskname'=>'Maintain','projname'=>'Easy Wedding');
$arr[] = array('taskname'=>'Flow Chart','projname'=>'Fnn');
$arr[] = array('taskname'=>'development in','projname'=>'Art gallery');
echo json_encode(array('rows'=>$arr));
?>
它将创建与我在javascript t变量中创建的相同的json数据。
答案 4 :(得分:0)
以下是一些可能有用的代码:
1)CODEIGNITER
public function selectDetalleSolicitudByIdCliente() {
$this->cliente_model->id_cliente = $_POST['id_cliente'];
$data["cliente_detalle"] = $this->cliente_model->selectDetalleSolicitudByIdCliente();
echo json_encode($data);
}
2)JQUERY
$.post(
"cliente/selectDetalleSolicitudByIdCliente",
{
id_cliente: id_cliente
},
function(respuesta){
$("#reporte2").html(">>" + respuesta);
var respuesta = jQuery.parseJSON(respuesta);//parse json
$.each(respuesta.cliente_detalle,function(index,value){
for(var i in value){
alert(i+' -> '+value[i]);
}
});
});