我有一个 jquery,我现在想分享
$('#load').click(function()
{
var v = $('#drp_v').val();
var cnt = $('#drp_cnt').val();
var ctg = $('#drp_ctg').val();
var api = $('#drp_api').val();
var nt = $('#drp_nt').val();
$.post("ajax.php",
{ 'version':v,'category':ctg,
'country':cnt,'network_id':nt,
'api':api,'func':'show_datatable',
'start_row':'0','limit':'2'},
function(data)
{
alert(data[1].limit);
var aColumns = [];
var columns = [];
for(var i = 0; i < data.length; i++)
{
if(i>0)
break;
keycolumns = Object.keys(data[i]);
for(j = 0; j < keycolumns.length; j++)
{
if($.inArray(keycolumns[j],aColumns.sTitle)<=0)
{
aColumns.push({sTitle: keycolumns[j]}) //Checks if
columns.push(keycolumns[j]) //Checks if
}
}
}
var oTable = $('#jsontable').dataTable({
"columns":aColumns,
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"aButtons": [
{
"sExtends": "csv",
"sButtonText": "CSV",
}
]
}
});
oTable.fnClearTable();
var row = []
for(var i = 0; i < data.length; i++)
{
for(var c = 0; c < columns.length; c++)
{
row.push( data[i][columns[c]] ) ;
}
oTable.fnAddData(row);
row = [];
}
},'json');
});
现在 ajax.php 在这里结束,它将数据返回给 jquery ajax 回调函数
function show_datatable($version,$ctg,$cnt,$nt,$api,$start_row,$limit)
{
$cnt_table = "aw_countries_".$version;
$ctg_table = "aw_categories_".$version;
$off_table = "aw_offers_".$version;
$sizeof_ctg = count($ctg);
$cond_ctg = " ( ";
for($c = 0; $c < $sizeof_ctg ; $c++)
{
$cond_ctg = $cond_ctg." $ctg_table.category = '".$ctg[$c]."' ";
if($c < intval($sizeof_ctg-1))
$cond_ctg = $cond_ctg." OR ";
else if($c == intval($sizeof_ctg-1))
$cond_ctg = $cond_ctg." ) ";
}
$sizeof_cnt = count($cnt);
$cond_cnt = " ( ";
for($cn = 0; $cn < $sizeof_cnt ; $cn++)
{
$cond_cnt = $cond_cnt." $cnt_table.country = '".$cnt[$cn]."' ";
if($cn < intval($sizeof_cnt-1))
$cond_cnt = $cond_cnt." OR ";
else if($cn == intval($sizeof_cnt-1))
$cond_cnt = $cond_cnt." ) ";
}
$sizeof_nt = count($nt);
$cond_nt = " ( ";
for($n = 0; $n < $sizeof_nt ; $n++)
{
$cond_nt = $cond_nt." $off_table.network_id = '".$nt[$n]."' ";
if($n < intval($sizeof_nt-1))
$cond_nt = $cond_nt." OR ";
else if($n == intval($sizeof_nt-1))
$cond_nt = $cond_nt." ) ";
}
$sizeof_api = count($api);
$cond_api = " ( ";
for($a = 0; $a < $sizeof_api ; $a++)
{
$cond_api = $cond_api." $off_table.api_key = '".$api[$a]."' ";
if($a < intval($sizeof_api-1))
$cond_api = $cond_api." OR ";
else if($a == intval($sizeof_api-1))
$cond_api = $cond_api." ) ";
}
$output = "";
$sql = "SELECT *
FROM $off_table,$cnt_table,$ctg_table
WHERE $off_table.id = $cnt_table.id
AND $off_table.id = $ctg_table.id
AND ".$cond_api."
AND ".$cond_nt."
AND ".$cond_cnt."
AND ".$cond_ctg." LIMIT $start_row , $limit";
$result = mysql_query($sql);
$arr_result = array();
while($row = mysql_fetch_assoc($result))
{
$arr_result[] = $row;
}
$arr_result_enc = json_encode($arr_result);
echo $arr_result_enc;
$arr_limit = array(
'start_row' => intval($start_row + $limit),
'limit' => $limit
);
$arr_limit_enc = json_encode($arr_limit);
echo $arr_limit_enc;
}
现在的问题是我得到这样的数据
[{"id":"10580","name":"Galaxy Legend (Android, Free, ROW, w\/ capping)"},
{"id":"10718","name":"Slots Vacation (Android, Free, Tier 3, 35MB, w\/ca"}]{"start_row":2,"limit":"2"}
[]里面的数据部分是我需要加载到数据表中的数据库结果,
{"start_row":2,"limit":"2"} 应单独用于检查目的。
但问题是,我无法将它们分开,即我无法分开
1. [{"id":"10580","name":"Galaxy Legend (Android, Free, ROW, w\/ capping)"},
{"id":"10718","name":"Slots Vacation (Android, Free, Tier 3, 35MB, w\/ca"}]
第二个
2. {"start_row":2,"limit":"2"}
我该怎么做?
提前致谢
最佳答案
像这样重新格式化返回的 JSON:
return json_encode(array(
'database' => $database,
'parameters' => $parameters
));
以便 JSON 读取
{
"database": [{"id":"10580","name":"Galaxy Legend (Android, Free, ROW, w\/ capping)"},
{"id":"10718","name":"Slots Vacation (Android, Free, Tier 3, 35MB, w\/ca"}
],
"parameters": {"start_row":2,"limit":"2"}
}
然后在接收data
的jQuery中,你将在你现在使用数据的地方使用data.database
,并使用data.parameters
来读取其他信息。 IE。 data.parameters.limit
将为您提供 2,依此类推:
function(data) {
// OLD alert(data[1].limit);
alert(data.parameters.limit);
...
for(var i = 0; i < data.database.length; i++) {
if (i>0) break;
keycolumns = Object.keys(data.database[i]);
...
关于javascript - 从大型 JSON 数据中分离值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27269374/