2016-10-01 78 views
0

我有這種方法從我的數據庫中檢索日期列表。通過ajax發送fetchAll陣列

function getdate($id) { 
    $select = $this->db->query("select * from dates where user_id= '$id' "); 
    $row = $select->fetchAll(PDO::FETCH_COLUMN); 
    return $row;   
} 

而且我有一個調用該方法GETDATE模型文件「負荷calendar.php」:

$dates = $user->getdate($id); 
    echo $dates; 

我希望能夠到數組$日期存儲在數組中我的js文件:

$(document).ready(function() { 
     var dbdates = new Array(); 
     $.ajax({ 
      type: 'POST', 
      url: 'loadcalendar.php', 
      data: { dates:dates }, 
      success: function(response) { 
       dbdates = response; 
       alert(dbdates); 

      } 

     }); 

但是,當我警告dbdates時,什麼都不出來。我的'getdate'方法有效。我只需要Ajax調用的幫助。先謝謝你!

+0

您應該打印'response'到控制檯,而不是在您嘗試將其保存到陣列後使用警報。在使用這些數據之前,你需要確保你得到了迴應。 – Jecoms

+0

您應該檢查'$ dates'數組是否包含帶有'print_r'的數據。要發送數據,請考慮使用'json_encode'(使用PHP)和'JSON.parse(response)'(使用JS) – Alex

+0

仔細檢查您是否通過瀏覽器的「網絡」選項卡獲取API的響應。此外,嘗試和'console.log'的響應,而不是提醒他們。您可以使用'$ .parseJSON'將返回的字符串響應轉換爲JSON對象。 –

回答

1

這裏分析這些語句,

$dates = $user->getdate($id); 
echo $dates; 

getdate()方法實際上返回一個數組,你想用echo $dates;做什麼,你想數組轉換爲字符串,從而贏得」工作。

相反,json_encode陣列並echo,就像這樣:

$dates = $user->getdate($id); 
echo json_encode($dates); 

此外,在您的AJAX請求添加dataType: 'json'設置,就像這樣:

$(document).ready(function() { 
    var dbdates = new Array(); 
    $.ajax({ 
     type: 'POST', 
     url: 'loadcalendar.php', 
     data: { dates:dates }, 
     dataType: 'json', 
     success: function(response) { 
      dbdates = response; 
      console.log(dbdates); 
     } 

    }); 
}); 
+0

謝謝!有效 。我現在得到這樣一個數組:Array ( [0] => 09-23-2016 [1] => 09-20-2016 [2] => 09-21-2016)你知道怎麼做我可以將它轉換爲一串字符串['09 -23-2016','09-20-2016 ...] –

+0

@ S.Al哦,我評論過早了。是的,你可以使用'toString()'方法做到這一點,就像這樣:'new Array(dbdates.toString())' –