2013-03-01 29 views
0

我想在jQuery中使用getJSON方法來檢索動態數組。我得到一個「非法」偏移量錯誤,試圖編碼我的動態數組。下面是服務器端代碼(我相信的JavaScript是正確的,因爲當我刪除查詢它運行良好):使用JSON編碼數組;獲得「非法偏移類型」錯誤

<?php 
session_start(); 
require_once "database.php"; 
db_connect(); 
require_once "auth.php"; 
$current_user = current_user(); 
include_once("config.php"); 

$westcoast_id = $_GET['westcoast_id']; 

$westcoast_array = array(); 


$query = "SELECT city, state FROM users GROUP BY city"; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_array($result)){ 

if($row['city'] != '' && $row['state'] != '') { 
    $westcoast_array[$row] = "location:".$row['city'].", ".$row['state'].", stopover:true"; 


    } 

} 

$data = array($westcoast_id, $westcoast_array); 

echo json_encode($data); 


?> 

非法偏移是在參考線:

$westcoast_array[$row] = "location:".$row['city'].", ".$row['state'].", stopover:true"; 

我看不到問題是什麼。感謝您的幫助!

+1

'$ row'是一個數組。它應該如何用作另一個陣列的*鍵*? – DCoder 2013-03-01 21:39:31

+0

與json絕對沒有關係。這完全是一個PHP問題 - 你在讀取循環中使用了一個不正確的數組鍵,正如@DCoder指出的那樣。 – 2013-03-01 21:40:31

+0

它看起來像你的JSON會有問題。在位置值中使用逗號而不用引號括起來。 – Aglystas 2013-03-01 21:43:10

回答

0
$westcoast_array[$row] = [...] 

是錯誤的。 (您不能使用數組作爲鍵)

只需使用:

$westcoast_array[] = [...] 
+0

謝謝你。這是我的問題。 – user1072337 2013-03-01 21:49:03

0

嘗試使用:

if($row['city'] != '' && $row['state'] != '') { 
    $westcoast_array[] = "location:".$row['city'].", ".$row['state'].", stopover:true"; 
} 

if($row['city'] != '' && $row['state'] != '') { 
    $westcoast_array[$row['state']][$row['city']] = "location:".$row['city'].", ".$row['state'].", stopover:true"; 
} 

的var_dump($ westcoast_array)看結構體。