Javascript错误中的LoadString()

Javascript错误中的LoadString(),javascript,p5.js,Javascript,P5.js,我一直在尝试使用有前途的p5.js库制作一个简单的web应用程序,但我被卡住了,不知道如何前进。为什么下面这几行行不通,对我来说真是个谜。我只是想加载一个简单的文本文件,但我不能。它一直说它是空的,但显然不是。我和p5js网站上的节目没有什么不同 事实上,我还尝试了默认示例,将要加载的字符串替换为: 什么也没有。我的服务器显示它正在发送字符串。。。我不知道p5js在做什么。有什么想法吗?代码如下 var result; var processedResult; function setup()

我一直在尝试使用有前途的p5.js库制作一个简单的web应用程序,但我被卡住了,不知道如何前进。为什么下面这几行行不通,对我来说真是个谜。我只是想加载一个简单的文本文件,但我不能。它一直说它是空的,但显然不是。我和p5js网站上的节目没有什么不同

事实上,我还尝试了默认示例,将要加载的字符串替换为: 什么也没有。我的服务器显示它正在发送字符串。。。我不知道p5js在做什么。有什么想法吗?代码如下

var result;
var processedResult;

function setup() {
   createCanvas(windowWidth, windowHeight);
   var URL = "http://quarx.asfa.gr/data.txt";
   result = loadStrings(URL, getHistoryState);
}

function draw() {
   background(0);
   ellipse(50, 50, 80, 80);
   textSize(50);
   text(processedResult, 300,300);
}

function getHistoryState() {
   processedResult = result;
}

您必须从承载脚本/页面的同一域加载数据

调查一下。特别是:
绘制文本的函数
draw()
,在
setup()
之后立即被API调用,因此很可能在回调(
getHistoryState()
)之前有机会将任何值设置为
processedResult

getHistoryState()
的末尾添加
draw()
,如下所示:

function getHistoryState() {
   processedResult = result;
   draw();
}
或者干脆去掉
getHistoryState()
,最终得到:

var result;

function setup() {
   createCanvas(windowWidth, windowHeight);
   var URL = "http://quarx.asfa.gr/data.txt";
   result = loadStrings(URL, draw);
}

function draw() {
   background(0);
   ellipse(50, 50, 80, 80);
   textSize(50);
   text(result, 300,300);
}

但在这两种情况下,
draw()
我们都会被调用两次(在
setup()
之后,然后通过回调)。如果这不是您想要的,请将
draw()
重命名为其他内容(或者在
draw()
的开头添加一条语句,以便在
processedResult
/
result
仍然为空时返回)。

我假设
getHistoryState
是一个回调。在
result
获得任何值之前,它将
processedResult
设置为
result
。在不了解p5.js的情况下,我假设调用回调时使用了相关数据的参数。这就是您需要将
processedResult
result
设置为的内容。您是对的。我用同一个域上的一个文件再试了一次,结果成功了。但是,我不明白的是,如果我想使用另一个站点的数据(比如说使用它的API),我该怎么做?我会不使用这些函数中的一个吗?在p5.js文档中的所有示例之后,从另一个页面/不同的域加载城市的温度,并在页面上显示值。为什么允许他们这样做?我注意到他们使用JSON来实现。这就是诀窍吗?loadJson可能能够使用jsonp。使用jsonp,您可以执行跨源请求。虽然这不适用于纯文本。很多API都支持jsonp。我尝试原样使用这个示例,只是将其替换为我的服务的URL(),但它在loadJSON行中返回一个错误:“SyntaxError:missing;before statement”有什么想法吗?