2015-09-05 97 views
0

在我的網站上,我使用ajax將數據發送到外部php腳本,該腳本查詢數據庫並將結果返回給網站。我遇到了問題,我只能用php返回字符串,但我想返回一個對象數組(這是有效的json)。我的代碼看起來像這樣的時刻:Http Get和PHP

PHP

$connection = mysqli_connect($adrs, $usr, $pw, $db); 

if(mysqli_connect_errno()) { 
die(mysqli_connect_error()); 
} 

if($_GET["feed"] == "hausaufgaben") { 
$query = "SELECT fach, aufgabe, datum FROM hausaufgaben WHERE fachgruppe != '"; 
if($_GET["fremdsprache"] == "latein") { 
    $query .= "französisch"; 
} 
else { 
    $query .= "latein"; 
} 
$query .= "' AND fachgruppe != '"; 
if($_GET["englisch"] == "koch") { 
    $query .= "schopper"; 
} 
else { 
    $query .= "koch"; 
} 
$query .= "' AND datum > '" . date("Y-m-d") . "' ORDER BY datum ASC;"; 

$result = mysqli_query($connection, $query); 

$data = []; 

while($row = mysqli_fetch_row($result)) { 
    $object = '{"fach": "' . $row[0] . '", "datum": "' . $row[2] . '", "aufgabe": "' . $row[1] . '"}'; 
    array_push($data, json_decode($object)); 
} 

echo $data; 
} 

AJAX

$.ajax({ 
    type: "GET", 
    url: "php/getFeed.php", 
    cache: false, 
    dataType: "json", 
    data: {feed: "hausaufgaben", fremdsprache: this.fremdsprache, englisch: this.englisch} 
}) 
.done(function(data, textStatus, jqXHR) { 
    alert(typeof(data)); 
    this.hausaufgaben = data; 
}) 
.fail(function(jqXHR, textStatus, error) { 
    alert("error: " + error); 
}); 

它總是引發錯誤 「意外令牌A」。我得到它作爲字符串返回數組中的每一行,但我不能在我的網站中使用字符串。我的問題是,我無法用php回顯對象數組,並用ajax獲取數組。

+0

你不能返回裸陣列。返回他們的json編碼表示。 –

回答

2

而不是嘗試自己構建json字符串,您可以通過使用PHP數據結構構建$data數組,然後使用json_encode()將其全部轉換爲用於發送到您的javascript的JSON字符串來更輕鬆地完成此操作。

參考json_encode and json_decode

像這樣: -

$data = []; 

while($row = mysqli_fetch_object($result)) { 
    $data[] = $row; 
} 

echo json_encode($data); 

你也將不得不改變你的JavaScript處理的對象,而不是字符串數組,但應該是很容易

+1

用適當的Content-Type頭('application/json'),jQuery實際上會爲你解析響應。 –