Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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文件并执行代码_Javascript_Html_Canvas - Fatal编程技术网

读取javascript文件并执行代码

读取javascript文件并执行代码,javascript,html,canvas,Javascript,Html,Canvas,我正在使用HTML5画布构建一个类似于谷歌地图的地图。我还创建了一个平铺系统,只有在屏幕上拖动时才能加载平铺 因此,我有多个javascript文件将在画布上绘制,每个文件都是一个平铺。其中一个文件可能如下所示(ctx是画布2d上下文): 现在,我知道了一种调用和执行javascript文件的方法,如下所示: function getTile(src){ var tileScript = document.createElement('script'); tileScri

我正在使用HTML5画布构建一个类似于谷歌地图的地图。我还创建了一个平铺系统,只有在屏幕上拖动时才能加载平铺

因此,我有多个javascript文件将在画布上绘制,每个文件都是一个平铺。其中一个文件可能如下所示(ctx是画布2d上下文):

现在,我知道了一种调用和执行javascript文件的方法,如下所示:

function getTile(src){
      var tileScript = document.createElement('script');
      tileScript.src = src;
      var head = document.getElementsByTagName('head')[0];
      head.appendChild(tileScript); }
但是我真的不想在文档头上添加大量的脚本标记。对于地图中的所有图层,这可能会导致像50个这样的脚本数量达到荒谬的程度


是否有其他读取和执行这些文件的方法?或者,如果有人能建议一种更好的方法,我愿意接受建议。

如果您只需要坐标,请使用阅读
.json
文件。然后你可以用你的数据执行上面的函数

JSON示例:

[[784,457],[759,989]] <- your coordinates
render()
函数:

function render(response){
   var json = JSON.parse(response); //parse the response to json
   ctx.fillStyle="rgb(255,255,255)";
   ctx.beginPath();
   ctx.moveTo(json[0][0],json[0][1]);
   ctx.lineTo(json[1][0],json[1][1]);
   ctx.fill();
}
或者,如果您真的只想评估您的函数,请执行 对Ajax响应执行eval()函数:

eval(xmlhttp.responseText);

但请记住,这是非常不确定的

你能举个例子详细说明一下吗?我对ajax和json不是很有经验。不幸的是,我需要执行的是文件的全部代码,而不仅仅是坐标。每个文件中的代码将完全不同。这个方法是否仍然适用于应用整个代码,而不仅仅是坐标?您可以使用json传递任何数据。您只需要编写一个动态函数来处理响应。在本例中,解析我给出的文件示例会是什么样子?记住,它还需要处理其他文件中完全不同的代码块。很抱歉,到目前为止,我无法实现这一点。您可以使用函数获取文件,然后使用响应执行JavaScript eval()函数。但是,这是一个非常肮脏的解决方案,如果这是唯一困扰您的事情,那么您可以在加载脚本元素之后删除它。但是,与其加载一堆带有可执行代码的JS文件,为什么不存储数据呢?为什么不在服务器上创建一个服务,只返回所需的坐标,然后创建一个函数,获取这些坐标并在画布上绘制。@adeneo如果要将信息存储在服务器数据库中,我无法在这个项目上做到这一点。数据需要在客户端存储和访问。@FelixKling我希望我可以将所有内容存储在服务器数据库中,但不幸的是,我无法在这个项目中存储坐标(数据),然后将坐标(数据)存储在一个文件或变量中,获取坐标并使用它,为什么要将代码位存储在多个javascript文件中。
function render(response){
   var json = JSON.parse(response); //parse the response to json
   ctx.fillStyle="rgb(255,255,255)";
   ctx.beginPath();
   ctx.moveTo(json[0][0],json[0][1]);
   ctx.lineTo(json[1][0],json[1][1]);
   ctx.fill();
}
eval(xmlhttp.responseText);