从ajax调用中获取json数据

时间:2009-06-24 01:16:40

标签: php jquery ajax json

我的问题是:我的php脚本如何发送json类型的数据 并收回成功或完整的功能?

我试图让this聊天功能在我的网站上运行 因为它没有用,我在代码中创建了一个最小化部分来检查 如果它与json方法有关。

我只测试了在phpscript被执行后我是否可以获得会话名称 我得到的是“未定义”而不是“johndoe”。

我不知道可能是什么问题。 显然,如果您在创建者页面上看到评论,该脚本对其他人来说效果很好。

这是我的测试代码

<?php
session_start(); 
$_SESSION['username'] = "johndoe" ;// Must be already set
?>

<script type="text/javascript" src="includes/jquery.js"></script>
<script language="JavaScript">
$(document).ready(function(){
 $("#testjson").click(function(e){
 startJsonSession();

    return false;
    });


function startJsonSession(){  
    $.ajax({
        url: "jsontest.php?action=startjson",
        cache: false,
        dataType: "json",
        complete: function(data) {
            username = data.username;
            alert(username);
        }

    });
}


}); 
</script>

<?php
//the php script

if ($_GET['action'] == "startjson") { startjsonSession(); } 



function startjsonSession() {
    $items = '';


    /*if (!empty($_SESSION['openChatBoxes'])) {
        foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) {
            $items .= chatBoxSession($chatbox);
        }
    }


    if ($items != '') {
        $items = substr($items, 0, -1);
    }*/

header('Content-type: application/json');
?>
{
        "username": "<?php echo $_SESSION['username'];?>",
        "items": [
            <?php echo $items;?>
        ]
}

<?php


    exit(0);
}

?>
谢谢,理查德

1 个答案:

答案 0 :(得分:1)

Richard,您应该查看PHP中的json_encode()函数。它会将您的数组快速转换为JSON,并使您不必处理大量数据的JSON语法的细微差别。


更新:修改后的代码

<?php

    session_start(); 
    $_SESSION['username'] = "johndoe" ;// Must be already set

?>

<script type="text/javascript" src="includes/jquery.js"></script>
<script language="JavaScript">
$(document).ready(function(){

    $("#testjson").click(function(e){
        startJsonSession();
        return false;
    });

    function startJsonSession(){  
        $.ajax({
            url: "jsontest.php?action=startjson",
            cache: false,
            dataType: "json",
            complete: function(data) {
                username = data.username;
                alert(username);
            }

        });
    }

}); 
</script>

<?php

    if ($_GET['action'] == "startjson") { 
        startjsonSession(); 
    } 

    function startjsonSession() {
        $items = '';

        print json_encode(array(
            "username" => "bob",
            "items" => array(
                "item1" => "sandwich",
                "item2" => "applejuice"
            )
        ));
    }
?>