我的问题是我 无法解决这个问题
如果我调用php脚本,我得到的是一个未定义的错误
这是我用来测试AND的代码
this is the original code from the creator that is giving me a headache
function startJsonSession(){
$.ajax({ url: "jsontest.php?action=startjson",
cache: false,
dataType: "json",
complete: function(data) {
username = data.username;
alert(username);
}
});
}
//phpscript
if ($_GET['action'] == "startjson") { startJson(); }
function startJson() {
header('Content-type: application/json');
$items = '';
echo json_encode(array(
"username" => "bob",
"items" => array( "item1" => "sandwich",
"item2" => "applejuice"
)
));
}
谢谢,理查德
编辑我的问题是因为:
此函数以不同的方式返回json数据
因此,下面给出的解决方案没有相同的结果。
function startChatSession() {
$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);
}
答案 0 :(得分:1)
我用你的代码重新创建并弄明白了。返回的对象是XMLHttpRequest类型。它有一个名为responseText的属性,它包含一个包含数据的json字符串。
所以这有效..
var decodedData = eval("(" + data.responseText + ")");
username = decodedData.username;
alert(username);
有点乱,但它有诀窍: - )
p.s如果有帮助,我在firefox中使用firebug并在js代码中粘贴断点
编辑如下: 不想做eval,你可以使用它并且它可以工作:
$.getJSON("json.php?action=startjson",
function(data) {
username = data.username;
alert(username);
}
);
编辑以显示我对成功功能所做的事情:
$.ajax({ url: "json.php?action=startjson",
cache: false,
dataType: "json",
success: function(data) {
username = data.username;
alert(username);
}
});
答案 1 :(得分:0)
用户名是全局变量吗? 如果不是,您应该添加“var”关键字。
username = data.username - &gt; var username = data.username;
答案 2 :(得分:0)
另外我不明白的是它突破了php模式,而不是回复它像xml一样
?>
{
"username": "<?php echo $_SESSION['username'];?>",
"items": [
<?php echo $items;?>
]
}
<?php
与上面相同(包含文字数组的对象数组)?
echo json_encode(array(
"username" => "bob",
"items" => $items
)
));
}
答案 3 :(得分:0)
最后我开始工作了。
我安装了firebug,发现php脚本正在返回html标题而不是json。
突然间它开始工作,我真的很想知道问题是什么,但我不能告诉你。
无论如何,感谢坚持这么久,大卫