У меня есть следующий код jQueryКак добавить каждую строку JSON в глобальную переменную jQuery?
Функция, я запустил ее, чтобы каждый раз извлекать 10 строк из базы данных через вызов AJAX.
Когда данные возвращаются на обратный вызов AJAX, каждая строка ответа добавляется к глобальному массиву.
Вот мой код:
<script type="text/javascript">
var oTable;
var outer_start_row = 0;
var outer_limit = 10;
var final_data = [];
$(document).ready(function() {
window.prettyPrint() && prettyPrint();
$('#load').click(function()
{
load_data_in_datatable();
});
});
function load_data_in_datatable()
{
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();
alert('outside start_row :'+outer_start_row);
$.post("ajax.php",
{ 'version':v,'category':ctg,
'country':cnt,'network_id':nt,
'api':api,'func':'show_datatable',
'start_row':outer_start_row,'limit':outer_limit},
function(response)
{
var data = response.data;
var limits = response.limits;
outer_limit = limits.limit;
outer_start_row = limits.start_row;
alert('inside start_row :'+outer_start_row);
final_data.push(data);
for(var f = 0; f < final_data.length; f++)
alert(final_data[f].name);
load_data_in_datatable();
},'json');
}
</script>
но проблема в том, когда я использую это предупреждение (final_data [е] .name); его предупреждение не определено.
Не знаю, что происходит неправильно
вот моя PHP функция Аякса
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 $off_table.id, $off_table.name
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;
$result_json = array(
'data' => $arr_result,
'limits' => $arr_limit,
);
echo json_encode($result_json);
}
EDIT:
Вот формат JSON
{"data":[{"id":"11105","name":"Gummy Drop (iPhone, Free, ROW except CN, 72.3MB, w"}],"limits":{"start_row":1,"limit":"1"}}
Можете ли вы 'console.log (data)' проверить, какие данные json вы возвращаете? –
Можете ли вы добавить ответ, который вы получаете от вызова ajax? (Код Json) –
Также обратите внимание, что вы выталкиваете все данные, возвращенные в один элемент массива, а не отдельные –