json_encode数组的问题

时间:2012-08-22 08:03:48

标签: php javascript jquery

我遇到了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']);

但它不起作用。

5 个答案:

答案 0 :(得分:1)

你试过像这样把“,'json'”:

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

没有那个jquery可以很明智地猜出格式是什么......

如前所述,它应该是data.content

并且如前所述使用console.log(数据)来查看实际的数据(可能是一个字符串,而它应该是一个json对象?)

答案 1 :(得分:1)

如果这是逐字粘贴,则在$ .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"));

答案 2 :(得分:0)

而不是使用$ .post

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

答案 3 :(得分:0)

您是否记录了data变量?什么记录?另外:mysql_*已被弃用,转向清晰并开始使用PDO。但我认为您打算将$row[0]['message']分配给$message变量。如果内存对我有用,mysql_*总是返回一个assoc数组数组或一个数组数组。

虽然我们讨论的主题是:JavaScript没有关联数组,只有对象,因此不是访问像data['content']这样的数据,而是使用data.content。括号表示法是为了方便起见,因此您可以使用变量的值作为属性名称(不带eval),当然是 EVIL

答案 4 :(得分:-2)

还在你的php上:

$row = mysql_fetch_assoc($result);

而不是mysql_fetch_array,如果你想使用$row['message']表示法。