2012-08-22 74 views
1

我遇到了我的JSON_encode和jQuery問題,我正在使用下面的代碼發佈完整的數組,但我無法得到它只回應我需要的一個數組。json_encode數組問題

$.get("/indexget.php", { page: "goals" },function(data) { 
$('#bodyContentStuff').text(data); 

完全jQuery代碼

$("#navLinkGoals").click(function() { 
    $("#bodyTitleBar").text("Goals"); 
    $.get("/indexget.php", { page: "goals" },function(data) { 
     $('#bodyContentStuff').text(data); 
    } 
); 

完整的PHP代碼

if($_REQUEST['page'] = 'goals'){ 
    $result = mysql_query("SELECT * FROM content WHERE page='indexGoals'") 
    or die(mysql_error()); 
    $row = mysql_fetch_array($result); 
    $message = $row['message']; 
} 
echo json_encode(array("content"=>"$message")); 

我有點帶編程菜鳥,但該網站是http://www.gronge.com如果你想看到什麼正在做,只需點擊目標鏈接。

編輯:哦,我也試圖

$('#bodyContentStuff').text(data['content']); 

但沒有奏效。

回答

0

有你記錄了data變量?它記錄了什麼?另外:mysql_*已棄用,請確定並開始使用PDO。但我認爲你的意思是將$row[0]['message']分配給$message變量。如果內存爲我提供了很好的服務,mysql_*總是返回一個關聯數組的數組或者一個數組。

雖然我們討論的主題是:JavaScript沒有關聯數組,只有對象,所以而不是訪問數據,如data['content'],使用data.content。括號表示法是爲了方便起見,因此您可以使用變量的值作爲屬性名稱(不包括eval),當然這是EVIL

+0

使用data.content什麼也沒帶回使用(data)帶回{內存「:」It works!「} – Alcapwn

+0

你的內存不能很好的爲你服務'mysql_fetch_array()'返回一個一維數組有什麼令你困惑的是,這個數組有兩個數字和關聯e鍵(除非使用可選的第二個參數來指定MYSQL_ASSOC或MYSQL_NUM來選擇其中的一個)。 – Barmar

+0

@Alcapwn:在這種情況下,嘗試:'data = JSON.parse(date);''.text(data.content);'之前'並且你都已經設置了(它仍然是一個字符串,需要在你之前解析可以作爲一個對象訪問它 –

0

,而不是獲得使用.post的$

$("#navLinkGoals").click(function() { 
    $("#bodyTitleBar").text("Goals"); 
    $.post("/indexget.php", { page: "goals" },function(data) { 
    $('#bodyContentStuff').text(data); 
} 
); 
+0

這實際上並沒有改變任何行動。 :)仍然有問題發佈完整的數組({「內容」:「它的工作!「})。 – Alcapwn

+0

只需轉儲你的'$ row'變量,以確保你正確地訪問數據 –

-2

也在你的PHP:

$row = mysql_fetch_assoc($result); 

而不是mysql_fetch_array,如果你想使用$row['message']符號。

+1

沒有錯。默認情況下'mysql_fetch_array()'返回一個包含索引鍵和相關聯鍵的數組。 – Barmar

+0

True我剛剛閱讀。但出於一個奇怪的原因,當我在我的服務器php上使用它時,它不會返回任何內容,除非在mysql_fetch_array上註明MYSQL_BOTH或MYSQL_ASSOC:/ – Panagiotis

1

有你試圖把「‘JSON’」像這樣:

$.get("/indexget.php", { page: "goals" },function(data) { 
    $('#bodyContentStuff').text(data.content); 
}, 'json') 

而沒有jQuery讓一個聰明的猜測,格式是什麼...

,並提到它應該是data.content

,並提到使用的console.log(數據),看看有什麼數據真的是(可能是字符串,而它應該是一個JSON對象?)

+1

並且猜測基於PHP作爲「Content-type」頭髮送的內容。選項是爲PHP腳本添加'header(「Content-type:application/json」);' – Barmar

1

如果這是逐字PA STE沒有對調用$不用彷徨

$("#navLinkGoals").click(function() { 
    $("#bodyTitleBar").text("Goals"); 
    $.get(
     "/indexget.php", 
     { 
      page: "goals" 
     }, 
     function(data) { 
      $('#bodyContentStuff').text(data); 
     } 
    ); // <== Right here 
); 

缺少一個右括號(代碼格式化,突出差異)

只注意到與PHP的潛在問題:

if($_REQUEST['page'] = 'goals'){ //<== are you assigning or comparing? 
    $result = mysql_query("SELECT * FROM content WHERE page='indexGoals'") 
    or die(mysql_error()); 
    $row = mysql_fetch_array($result); 
    $message = $row['message']; 
} 
echo json_encode(array("content"=>"$message")); 
+0

我錯過了最後一個意外的行 – Alcapwn