在Javascript错误中loadStrings()

时间:2014-08-29 15:18:45

标签: javascript p5.js

我一直在尝试使用有前途的p5.js库创建一个简单的Web应用程序,但我陷入困境,不知道如何继续前进。对我来说,为什么以下几行不起作用真的很神秘。我只是想加载一个简单的文本文件,我不能。当它显然不是时,它一直说它是空的。我没有做任何与p5js上的default example节目不同的事情。网站。

实际上我也尝试了默认示例,将要替换的字符串替换为: http://quarx.asfa.gr/data.txt 没别的了。我的服务器显示它正在发送字符串...我不知道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;
}

2 个答案:

答案 0 :(得分:1)

您必须从托管脚本/页面的同一域中加载数据。

查看Same-Origin-Policy。尤其是this tableenter image description here

答案 1 :(得分:0)

绘制文本draw()的函数会在setup()之后立即由API调用,因此很可能在回调(getHistoryState())之前有机会设置任何值到processedResult

draw()末尾添加getHistoryState()

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仍然存在的情况下返回空)。