语法:错误JSON.parse,当尝试加载protovis的数据时

时间:2011-01-14 21:20:27

标签: javascript ajax json protovis

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

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

<script type="text/javascript+protovis"> 
var dataURL = "http://eagereyes.org/media/2010/protovis-primer/earthquakes.json";

var JSONdata = $.ajax({ type: "GET", url: dataURL, async: false }).responseText;
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();

当我在Firefox中尝试此操作时,我会收到此警报:

Syntax:Error JSON.parse

我已经在http://www.jsonlint.com/验证了JSON。所以问题必须在其他地方。

有谁知道这里发生了什么?

修改

我尝试在protoviewer应用中加载相同的数据:http://www.rioleo.org/protoviewer/并且它可以正常工作。所以它必须是代码。

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

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

https://github.com/douglascrockford/JSON-js

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

alert(JSON);

<强>更新

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

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

答案 2 :(得分:0)

在回复的末尾添加分号;

答案 3 :(得分:0)

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