【问题标题】:get json data back from ajax call从ajax调用中获取json数据
【发布时间】:2009-06-24 01:16:39
【问题描述】:

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

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

我只测试了在处理 phpscript 后是否可以取回会话名称 我得到的是“未定义”而不是“johndoe”。

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

这是我的测试代码

<?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);
}

?>

谢谢,理查德

【问题讨论】:

    标签: php jquery ajax json


    【解决方案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"
                )
            ));
        }
    ?>
    

    【讨论】:

    • 是的,我已经对此进行了一些研究,但在我必须更改创建者代码之前,我想知道是否还有其他原因会导致这种情况。我真的不期待更改他的代码,因为我不完全理解它。使用 heredoc 语法等
    • 试试这样的 JSON 格式:{"a":1,"b":2,"c":3,"d":4,"e":5} - 所以你的代码将是 {"username": "bob","items": "apples"} (继续并保留硬编码值进行测试)
    • 另外,现在把 header() 方法拉出来 - 把它注释掉。
    • 一秒钟...你的格式让我有点困惑。让我在我的屏幕上清理一下,然后再看看......
    • Richard,我做了一些更改 - 它适用于我本地。检查我的帖子以获取更新的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多