Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Javascript 语法:尝试为protovis加载数据时出错JSON.parse_Javascript_Ajax_Json_Protovis - Fatal编程技术网

Javascript 语法:尝试为protovis加载数据时出错JSON.parse

Javascript 语法:尝试为protovis加载数据时出错JSON.parse,javascript,ajax,json,protovis,Javascript,Ajax,Json,Protovis,嗨,我正在学习如何使用protovis,到目前为止还不错,但现在我偶然发现了一个我似乎无法解决的问题 下面是代码。(我的标题中加载了最新的jquery) 我已经在上验证了JSON。因此,问题肯定出在别处 有人知道这是怎么回事吗 编辑 我试着在protoviewer应用程序中加载相同的数据:它可以工作。所以一定是代码。您使用的是哪种浏览器?有些浏览器不定义JSON对象。您可以从下面的URL下载脚本,该脚本将定义JSON对象(如果该对象尚不存在) 您可以检查JSON是否定义如下: alert(JS

嗨,我正在学习如何使用protovis,到目前为止还不错,但现在我偶然发现了一个我似乎无法解决的问题

下面是代码。(我的标题中加载了最新的jquery)

我已经在上验证了JSON。因此,问题肯定出在别处

有人知道这是怎么回事吗

编辑


我试着在protoviewer应用程序中加载相同的数据:它可以工作。所以一定是代码。

您使用的是哪种浏览器?有些浏览器不定义
JSON
对象。您可以从下面的URL下载脚本,该脚本将定义
JSON
对象(如果该对象尚不存在)

您可以检查
JSON
是否定义如下:

alert(JSON);
更新

好的,接下来我要做的是检查ajax调用是否实际返回corect数据。更改代码以打印从ajax调用返回的JSON

var JSONdata = $.ajax({ type: "GET", url: dataURL, async: false }).responseText;
alert(JSONdata);
var earthquakes = JSON.parse(JSONdata);

添加分号
到您的响应结束

您是否尝试了常规异步回调而不是同步方法?比如:

var dataURL = "http://eagereyes.org/media/2010/protovis-primer/earthquakes.json";

$.ajax({
  type: "GET",
  url: dataURL,
  success: function(response) {
    var earthquakes = JSON.parse(JSONdata);

    var width = 560;
    var height = 245;

    var barWidth = width/earthquakes.length;
    var gap = 2;

    new pv.Panel().width(width).height(height+5)
        .add(pv.Bar)
            .data(earthquakes)
            .bottom(0)
            .width(barWidth-gap)
            .height(function(d) d.Magnitude * (height/9))
            .left(function() this.index * barWidth)
        .root.render();     
  }
});
另外,该JSON文件是否位于发出请求的页面在地址栏中显示的同一服务器上(正好
http://eagereyes.org


最后,不需要手动执行JSON.parse()步骤。如果添加
数据类型:“json”
参数,$.ajax()将自动反序列化为json,并在可用的地方使用json.parse()。

谢谢!我使用的是Firefox(最新版本),我还登录了Safari。警报(JSON)给了我这个:[object JSON]好的,再次感谢。第一个警报(JSONdata)给了我一个空警报,然后是错误。第二个只有错误。在哪里?对不起,我没看到。我一直在这个代码字符串现在。谢谢!!这不再给我错误了。虽然好像什么都没装。我不知道JSON是否位于同一台服务器上。当我说是同一台服务器时,我应该说是同一个域。是否通过以
开头的URL访问包含此JavaScript的页面http://eagereyes.org
?这会让您陷入困境。对于跨站点请求,不能使用使用XMLHttpRequest的常规AJAX方法;出于安全原因,浏览器将禁止这些请求。如果您可以控制远程站点,请考虑将该数据作为JSONP提供。如果没有,您将需要构建一个服务器端端点,该端点将输入来自$.ajax()代码的请求,并充当请求远程数据并将其返回的代理。好的。谢谢。这对我来说是对的。所以基本上我需要做的就是从同一个域加载JSON。子域也可以工作吗?实际上,file_get_contents()(在php中)可能是一个解决方案!
$.ajax({
            type: "POST",
            url: "saveChangesInEditing.php",
            data: idObject,
            success: function(data){
                         dataObject = JSON.parse(data);
                         $("input[name = 'id']").val(dataObject.id);
                         $("input[name='full_name']").val(dataObject.full_name);
                         $("input[name='sport']").val(dataObject.sport);
                         $("input[name='idol']").val(dataObject.idol);
                    },
            error: function(data){
                     alert("error!" + data);
                   }
        });
var dataURL = "http://eagereyes.org/media/2010/protovis-primer/earthquakes.json";

$.ajax({
  type: "GET",
  url: dataURL,
  success: function(response) {
    var earthquakes = JSON.parse(JSONdata);

    var width = 560;
    var height = 245;

    var barWidth = width/earthquakes.length;
    var gap = 2;

    new pv.Panel().width(width).height(height+5)
        .add(pv.Bar)
            .data(earthquakes)
            .bottom(0)
            .width(barWidth-gap)
            .height(function(d) d.Magnitude * (height/9))
            .left(function() this.index * barWidth)
        .root.render();     
  }
});
$.ajax({
            type: "POST",
            url: "saveChangesInEditing.php",
            data: idObject,
            success: function(data){
                         dataObject = JSON.parse(data);
                         $("input[name = 'id']").val(dataObject.id);
                         $("input[name='full_name']").val(dataObject.full_name);
                         $("input[name='sport']").val(dataObject.sport);
                         $("input[name='idol']").val(dataObject.idol);
                    },
            error: function(data){
                     alert("error!" + data);
                   }
        });