Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
Javascript 使用ajax解析json_Javascript_Html_Ajax_Json - Fatal编程技术网

Javascript 使用ajax解析json

Javascript 使用ajax解析json,javascript,html,ajax,json,Javascript,Html,Ajax,Json,我从python服务器接收到一个json文件,我尝试使用ajax解析该文件,以在单独的下拉菜单中根据类别(例如data_provider、census)显示值。但我经常遇到以下错误: 未捕获错误:语法错误,无法识别的表达式:[{“数据提供程序”:“普查”,“数据年”:“2010”,“数据系列”:“sf1”,“tb名称”:“h1”,“汇总级别”:“160”},{“数据提供程序”:“普查”,“数据年”:“2010”,“数据系列”:“sf1”,“tb名称”:“p1”,“汇总级别”:“050”}] 请帮

我从python服务器接收到一个json文件,我尝试使用ajax解析该文件,以在单独的下拉菜单中根据类别(例如data_provider、census)显示值。但我经常遇到以下错误: 未捕获错误:语法错误,无法识别的表达式:[{“数据提供程序”:“普查”,“数据年”:“2010”,“数据系列”:“sf1”,“tb名称”:“h1”,“汇总级别”:“160”},{“数据提供程序”:“普查”,“数据年”:“2010”,“数据系列”:“sf1”,“tb名称”:“p1”,“汇总级别”:“050”}]

请帮帮我!下面是我写的代码

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
    function codeAddress() {
        var ajax = $.ajax({
            //data : params,
            type : "GET",
            crossDomain: true,
            dataType: "json",
            //jsonp: "callback",
            //callbackParameter: "callback",
            //contentType : "application/x-www-form-urlencoded",
            url : "http://0.0.0.0:8080/"

        });

        ajax.done(function() {
            var response=ajax.responseText;
            var json = jQuery.parseJSON(response);


            $(json).each(function(i,val){
                $.each(val,function(k,v){
                    console.log(k+" : "+ v);
                });
            });
        });

        ajax.fail(function() {
            alert("fail");
        });


        ajax.always(function() {
           alert("done");
        });
    }
</script>
</head>
<body id="b1" onload="codeAddress();">

</body>
</html>

试验
函数代码地址(){
var ajax=$.ajax({
//数据:params,
键入:“获取”,
跨域:是的,
数据类型:“json”,
//jsonp:“回调”,
//callbackParameter:“回调”,
//contentType:“application/x-www-form-urlencoded”,
url:“http://0.0.0.0:8080/"
});
完成(函数(){
var response=ajax.responseText;
var json=jQuery.parseJSON(响应);
$(json).each(函数(i,val){
$。每个(val,函数(k,v){
console.log(k+“:”+v);
});
});
});
fail(函数(){
警报(“失败”);
});
always(function()){
警惕(“完成”);
});
}

如果您已经在使用jQuery,就让他们为您完成繁重的工作吧

$.getJSON("http://0.0.0.0:8080/", function(json){
// do your JSON work here
});

如果出于任何原因无法使用$.getJSON,请在$.ajax请求中设置一个类似于我这里的
success
回调函数。

因为您将
datatype
设置为
json
,我想您不需要自己解析json。请注意,解析后的响应在
done
方法的第一个参数中提供,请参见jQuery文档中的示例:

$.ajax({
  url: "http://fiddle.jshell.net/favicon.png",
})
.done(function( data ) {
  console.log( "Sample of data:", data.slice( 0, 100 ) );
});

这与其说是回答,不如说是评论。另外,
$。getJSON
不能在需要返回
JSON
的所有情况下使用。我认为这是一个有效的答案,或者至少不应该得到-1://如果这解决了问题,那么现有代码是什么导致了问题?@scimonester他所做的没有错。它可能并不理想,但它肯定不会出现错误。@scime肯定有些东西是错误的。不过,这似乎不是他发布的代码。正如昆廷所演示的,上面的代码工作得很好。这里的问题很可能是他的数据源。OP确实不需要自己解析响应,但是因为他们得到原始的
responseText
并进行解析,这样做不会导致问题。是的,我认为情况就是这样:@user2284140试图解析一个已经解析过的JSON,也试图解析一个哈希。因此,我可以直接使用ajax.responseText在变量response中接收到的JSON,并使用它来索引值?当应用
JSON.parse
两次时,我得到错误:
“未捕获的语法错误:意外的标记o”
。这和OP犯的错误不完全一样。@Quentin是对的。只是给你的第一条评论添加了更多的证据,因为它似乎就在这些家伙的头上。考虑到你的JSON和你的代码(但将URL更改为我托管JSON的URL),@Quentin字符串中是否可能有未替换的UTF控制字符?@crush-或任何不可见的字符。这是造成这个问题的一个相当合理的原因。