получить данные JSON от вызова AJAX - PullRequest
0 голосов
/ 24 июня 2009

мой вопрос: как мой php-скрипт может отправлять данные типа json и получил обратно в успех или завершить функцию?

Я пытался заставить эту функцию чата работать на моем сайте. Поскольку это не сработало, я создал свернутую часть кода для проверки если это как-то связано с методом 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 Ответ

1 голос
/ 24 июня 2009

Ричард, вам стоит взглянуть на функцию json_encode () в PHP. Он быстро преобразует ваш массив в 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"
            )
        ));
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...