2014-12-03 42 views
0

我有一個以下的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 [F]。名稱);其警報未定義。

不知道怎麼回事錯

,這裏是我的PHP 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 $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); 
} 

編輯:

這裏有一個JSON格式

{"data":[{"id":"11105","name":"Gummy Drop (iPhone, Free, ROW except CN, 72.3MB, w"}],"limits":{"start_row":1,"limit":"1"}} 
+0

你可以用'console.log(data)'來驗證你回來的json數據嗎? – 2014-12-03 11:47:15

+0

您可以添加從ajax調用中獲得的響應嗎?(Json代碼) – 2014-12-03 11:47:51

+0

還要注意,您要將整個數據返回到一個數組元素中,而不是單個元素中 – 2014-12-03 11:50:17

回答

1

你不能推整個數據都是這樣的:

final_data.push(data); 

data本身是一個數組,和數組沒有name財產,這就是爲什麼你得到你看到的錯誤。你需要遍歷它並推送單個元素:

for (var x = 0; x < data.length; x++) 
    final_data.push(data[x]);