Javascript jQueryJSON未从JQAjax请求解析

Javascript jQueryJSON未从JQAjax请求解析,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我对jQuery相当陌生,我的JSON数据似乎没有按照我所期望的方式进行解析 所以我用json_encode$var创建了我的数据;在PHP中,这似乎很好: {"id":"7","0":"7","ip":"86.152.117.159","1":"86.152.117.159","proxyip":"86.152.117.159","2":"86.152.117.159","ping":"1","3":"1","time":"03:39:17","4":"03:39:17"}{"id":"6",

我对jQuery相当陌生,我的JSON数据似乎没有按照我所期望的方式进行解析

所以我用json_encode$var创建了我的数据;在PHP中,这似乎很好:

{"id":"7","0":"7","ip":"86.152.117.159","1":"86.152.117.159","proxyip":"86.152.117.159","2":"86.152.117.159","ping":"1","3":"1","time":"03:39:17","4":"03:39:17"}{"id":"6","0":"6","ip":"86.152.117.159","1":"86.152.117.159","proxyip":"86.152.117.159","2":"86.152.117.159","ping":"1","3":"1","time":"03:36:20","4":"03:36:20"}
这是通过jQuery的AJAX从同一服务器/域上的单独URL导入的

但当我使用此代码尝试导入它时:

$.ajax({url:"load.php",success:function(result){
            var obj = jQuery.parseJSON(result);
            $(".response").html(obj.id);
        }});
检查我的控制台,我得到了未捕获的SyntaxError:Unexpected token{指向index.php中的第1行-注意,我没有使用外部JS文件

我不知道我做错了什么,也不知道我应该如何着手解决这个问题,这样我就可以在页面(即表)上以非json形式显示数据

非常感谢您的帮助

编辑:

下面是我的load.php文件:

try {
    $db = new PDO("mysql:host=$mysql_host;dbname=$mysql_db", $mysql_user, $mysql_pass);
} catch(PDOException $e) {
    $e->getMessage();
}

$update = "SELECT * FROM traffic";
foreach ($db->query($update) as $user) {
    echo json_encode($user);
}
请尝试JSON.parse:

或者更好的方法是,在PHP中指定dataType:'json'并设置json内容类型,这样就不必解析JS中的任何字符串:

    $.ajax({url:"load.php", dataType:'json', success:function(result){
        $(".response").html(result.id);
    }});
警告:

确保您的json有效。如果您在PHP中使用循环,最好构造一个关联数组,然后将数组传递给json_encode一次。

请尝试json.parse:

或者更好的方法是,在PHP中指定dataType:'json'并设置json内容类型,这样就不必解析JS中的任何字符串:

    $.ajax({url:"load.php", dataType:'json', success:function(result){
        $(".response").html(result.id);
    }});
警告:


确保json有效。如果在PHP中使用循环,最好构造一个关联数组,然后将数组传递给json_encode一次。

您的json无效,请使用检查

第12行的分析错误: …4:03:39:17}{id:6, -----------^ 应为'EOF'、'}'、'、'、']' 您有两个对象。像[{},{}这样的数组中应该只有一个或两个

您应该能够立即响应所有内容,如:

echo json_encode($db->query("SELECT * FROM traffic")->fetchAll()); 

您的json无效,请使用检查

第12行的分析错误: ... 4:03:39:17}{id:6, -----------^ 应为'EOF'、'}'、'、'、']' 您有两个对象。像[{},{}这样的数组中应该只有一个或两个

您应该能够立即响应所有内容,如:

echo json_encode($db->query("SELECT * FROM traffic")->fetchAll()); 
你不能调用echo json_encode。。。两次将所有结果放入一个数组,并对其进行编码

$result = array();
foreach ($db->query($update) as $user) {
    $result[] = $user;
}
echo json_encode($result);
然后在Javascript中,您需要一个循环来读取它们:

$.ajax({url:"load.php",success:function(result){
        var obj = jQuery.parseJSON(result);
        var ids = obj.map(function(el) {
            return el.id;
        });
        $(".response").html(ids.join(' '));
    }
});
你不能调用echo json_encode。。。两次将所有结果放入一个数组,并对其进行编码

$result = array();
foreach ($db->query($update) as $user) {
    $result[] = $user;
}
echo json_encode($result);
然后在Javascript中,您需要一个循环来读取它们:

$.ajax({url:"load.php",success:function(result){
        var obj = jQuery.parseJSON(result);
        var ids = obj.map(function(el) {
            return el.id;
        });
        $(".response").html(ids.join(' '));
    }
});

在chrome开发者工具控制台中,我尝试了JSON.parse,但得到了相同的错误

问题是您正在发送两个连续的对象-{id:7,…}和{id:6,…}。当它找到第一个关闭的大括号}时,它需要EOF,因此第二个打开的大括号{抛出一个意外的标记SyntaxError

解决方案是将对象包装在JSON数组中

在PHP中尝试echo json_encode$db->query$update;,不使用循环

在chrome开发者工具的“网络”选项卡中,当您检查预览时,应该会看到

[{id:7,…},{id:6,…}]


在chrome开发者工具控制台中,我尝试了JSON.parse,并得到了相同的错误

问题是您正在发送两个连续的对象-{id:7,…}和{id:6,…}。当它找到第一个闭合大括号}时,它需要EOF,因此第二个开放大括号{会抛出一个意外的标记SyntaxError

解决方案是将对象包装在JSON数组中

在PHP中尝试echo json_encode$db->query$update;,不使用循环

在chrome开发者工具的“网络”选项卡中,当您检查预览时,应该会看到

[{id:7,…},{id:6,…}]


用剩下的属性替换我的省略号。

我的PHP用json_encode$var完成了这项工作;我该如何解决这一问题?我想你有一个循环或什么东西,输出两个对象而不是一个对象,但你必须发布更多的代码…我在上面添加了我的load.PHP代码!可能只是手动添加大括号就行了?[.json_encode$user.];Edit:上面的注释不起作用,看代码很明显,我使用foreach单独编码了它们,我将尝试编码实际的foreach语句。因此,这会停止错误,这是好的,但我仍然没有得到返回的结果:$.response.htmlobj.id;我的PHP使用json_encode$var完成了这项工作;我该如何解决这个问题?我猜您有一个循环或其他输出两个对象而不是一个对象的东西,但是您必须发布更多的代码…我在上面添加了我的load.php代码!可能只是手动添加大括号就可以了?[.json\u encode$user.];编辑:上面的注释不起作用,看代码很明显,我使用foreach单独编码了它们,我将尝试编码实际的foreach语句。因此,这停止了错误,这是好的,但我仍然没有得到返回的结果:$.response.htmlobj.id;你能发布$vari的内容吗?你做错了什么您发布的不是有效的JSON,缺少com
ma,这两个对象不包含在任何内容中,这就是语法错误所在。你是在服务器上添加JSON字符串吗?哦,你只是在循环中回显JSON字符串,这行不通!你能发布$VAR的内容吗?你做错了什么,因为你发布的内容不是有效的JSON,缺少逗号,这两个对象没有包含在任何内容中,这就是语法错误所在。你是在服务器上添加JSON字符串吗?哦,你只是在循环中回显JSON字符串,这行不通!我把回调的参数搞错了,现在试试。行了!:-在我尝试了更多的东西之后,我将投票选出最佳答案:最佳答案!额外提示:如何将数据放入表中?放入类似$tableID.append+el.id++el.someCol+;在循环中。我很久以前就这样做了,我面临着另一个问题-既然你在这方面看起来像上帝-这里有一个链接:-我把回调的参数搞错了,现在试试。行了!:-在我尝试了更多的东西之后,我将投票选出最佳答案:最佳答案!额外提示:如何将数据放入表中?放入类似$tableID.append+el.id++el.someCol+;在循环中。我很久以前就这样做了,我面临着另一个问题——既然你在这一点上看起来像上帝——以下是链接:-