Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajaxcall接收json数据时出现未定义错误_Php_Jquery_Ajax_Json - Fatal编程技术网

Php ajaxcall接收json数据时出现未定义错误

Php ajaxcall接收json数据时出现未定义错误,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我的问题是我 不能解决这个问题 如果调用php脚本,得到的只是一个未定义的错误 这是我用于测试和测试的代码 谢谢,Richard 编辑我的问题是因为: 此函数以不同的方式返回json数据 因此,下面给出的解决方案没有相同的结果 function startChatSession() { $items = ''; if (!empty($_SESSION['openChatBoxes'])) { foreach ($_SESSION['openChatBoxes'

我的问题是我 不能解决这个问题

如果调用php脚本,得到的只是一个未定义的错误

这是我用于测试和测试的代码

谢谢,Richard

编辑我的问题是因为:
此函数以不同的方式返回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);
}
函数startChatSession(){
$items='';
如果(!empty($\u会话['OpenChatboxs'])){
foreach($\会话['openchatboxs']作为$chatbox=>$void){
$items.=chatBoxSession($chatbox);
}
}
如果($items!=''){
$items=substr($items,0,-1);
}
标题('Content-type:application/json');
?>
{
“用户名”:“”,
“项目”:[
]
}

用户名是全局变量吗? 如果不是,则应在“var”关键字前面加上前缀


username=data.username->var username=data.username;

我用您的代码重新创建并计算出来。返回的对象是XMLHttpRequest类型。它有一个名为responseText的属性,其中包含一个包含数据的json字符串

所以这是有效的

var decodedData = eval("(" + data.responseText + ")");
username = decodedData.username;
alert(username);
有点凌乱,但它确实起到了作用:-)

p、 如果有帮助的话,我在firefox中使用firebug并在js代码中插入一个断点来解决这个问题

编辑如下: 不需要进行评估,您可以使用此工具,它可以工作:

$.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);
  }
});

我还不明白的是,它脱离了php模式,而不是像使用xml那样回显它

?>
{
        "username": "<?php echo $_SESSION['username'];?>",
        "items": [
            <?php echo $items;?>
        ]
}

<?php

最后我让它工作了

我安装了firebug,看到php脚本返回的是html标题,而不是json

突然它开始工作了,我真的很想知道问题出在哪里,但我不能告诉你


无论如何,谢谢你坚持这么久,David

你到底收到了一条错误消息吗?你是不是因为action==startjson和function==startjsonSession()而动态调用了名为“action”(在$\u帖子中)的函数。只是试图排除它……我应该澄清一下,你的查询字符串是url:“jsontest.php?action=startjson”php函数是startjsonSession,所以如果您的php处理看起来像return$\u POST['action']),那么它不会调用函数编辑我的问题,但是您可能会错,但是我认为$.ajax是一个$\u POST,所以请尝试查看$\u POST['action']==“startjson”用户名只在完成函数中使用,所以这应该不是问题?这可能会导致“未定义”IE中出现错误并破坏当前页面。谢谢,但这不是一个糟糕的解决方法。我了解到eval并不总是与json兼容。我将尝试您的解决方案,看看是否可以让整个聊天代码正常工作。如果您感兴趣,我在问题中添加了来自创建者的原始代码链接。我希望不必对原始代码做太多更改code.eval()是不安全的,也就是说,如果你不信任源代码。如果你查看json.org,你会发现一些解析器,就像我查看原始的一样,区别在于它没有指定一个“完整”函数,而是指定了一个“成功”。这似乎做了任何评估或之前做的任何事情,然后是“数据”已经是一个js objectOk,但那个返回未定义的Alsohm,那么我就卡住了。我刚刚试过,它在我身上运行良好,只是对你原来的帖子做了更改:-(我认为这与使用html时吐出文字字符一样。只是做相同事情的不同风格是的,手动做json_encode函数所做的事情。使用json_encode显然更安全,因为手写可能会出错:-)
?>
{
        "username": "<?php echo $_SESSION['username'];?>",
        "items": [
            <?php echo $items;?>
        ]
}

<?php
echo json_encode(array(          
             "username" => "bob",    
             "items" => $items
        )     
             ));  
 }