嗨,我正在学习如何使用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/并且它可以正常工作。所以它必须是代码。
答案 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);
}
});