簡體   English   中英

json_encode數組出現問題

[英]Issues with json_encode array

我的JSON_encode和jQuery有問題,我用下面的代碼發布完整的數組,但是我無法讓它僅回顯我需要的一個數組。

$.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']);

但這沒有用。

您是否嘗試過將“,'json'”這樣放置:

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

沒有那個jQuery,就會聰明地猜測格式是什么...

如前所述,應該是data.content

並如前所述,使用console.log(data)來查看真正的數據(也許是字符串,而它應該是json對象?)

如果是逐字粘貼,則對$ .get的調用中缺少結束括號

$("#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"));

而不是使用$ .post

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

您是否記錄了data變量? 它記錄什么? 另外: mysql_*已過時,請清除並開始使用PDO。 但是我認為您打算將$row[0]['message']分配給$message變量。 如果內存對我mysql_* ,則mysql_*總是返回assoc數組的數組或數組的數組。

當我們討論這個主題時:JavaScript沒有assoc數組,只有對象,因此,使用data.content而不是訪問諸如data['content']類的data['content'] 括號表示法是為了方便起見,因此您可以將變量的值用作屬性名(不帶eval),當然是EVIL

也在您的php上:

$row = mysql_fetch_assoc($result);

如果要使用$row['message']表示法,則不是mysql_fetch_array。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM