Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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 - Fatal编程技术网

Javascript 是否有方法从与网页位于同一服务器上的文本文件加载数据?

Javascript 是否有方法从与网页位于同一服务器上的文本文件加载数据?,javascript,Javascript,最近,我开始开发一个简单的自上而下的基于平铺的程序,在这个程序中,你可以在地图上移动玩家角色,并放大和缩小地图 一切进展顺利,我画了背景,现在我想开始画一些瓷砖 目前我有一些东西看起来像这样: var tileset1 = new Image(); tileset1.src = "Images/Tileset1.gif"; var tx = []; var ty = []; var txo = []; var tyo = []; //Background tile x and y on the

最近,我开始开发一个简单的自上而下的基于平铺的程序,在这个程序中,你可以在地图上移动玩家角色,并放大和缩小地图

一切进展顺利,我画了背景,现在我想开始画一些瓷砖

目前我有一些东西看起来像这样:

var tileset1 = new Image();
tileset1.src = "Images/Tileset1.gif";
var tx = [];
var ty = [];
var txo = [];
var tyo = []; //Background tile x and y on the map and the x and y offset in the image for drawing
var tilesize = 32; //constant for each tiles width and height in pixels.

function map1data() {
    "use strict";
    tx[0] = 0;
    ty[0] = 0;
    txo[0] = 0;
    tyo[0] = 0;
    tx[1] = 32;
    ty[1] = 0;
    txo[1] = 32;
    tyo[1] = 0;
}
map1data();
ctx.drawImage(tileset1, txo[i], tyo[i], tilesize, tilesize, tx[i], ty[i], tilesize, tilesize);
这很好,但我的主要问题是使用数组来绘制分幅,并且必须通过将每个分幅硬编码到脚本中来提供其属性

如果我的地图中有100个分幅,我将不得不手动编写400行代码,这并不理想

所以我想知道的是,有没有一种方法可以在网页所在的实际服务器上(比如,在与索引页相同的根文件系统中?)生成一个纯文本文件,并为其内容设置一个变量,就像我对图像所做的那样?不必使用DOM从特定的服务器url请求它,您可以使用API。这样做的目的是告诉浏览器从服务器请求指定的文件,而无需加载新页面并将其呈现给用户。然后,您可以将返回的数据分配给代码中的一个变量,并从那里使用它

如果您不介意使用jQuery,可以使用
.get()
,它的语法更简单:

$.get( "tiles.txt", function( data ) {
  // assign 'data' to an existing variable or pass into a function
});

您可能希望将数据存储为JSON或其他类似格式,而不是纯文本(这样更易于操作)。

您不想使用ajax有什么原因吗?您可以按如下方式使用PHP(假设以下文件名为myscript.PHP):

//如有必要,请在此处放置任何打开的javascript代码。

是的,这是Ajax的基本思想。获取文档并处理文件并将其存储到变量中。我认为海报不希望发出ajax请求。他们说“不必使用DOM从特定的服务器url请求”,如果您不想使用ajax,您可以在服务器上有另一个javascript文件,并在该文件中将数据分配给全局变量。然后将该js文件包含在脚本标记中。当页面加载时,脚本将运行并将数据分配给var。您可以使用ajax(正如epascarello指出的那样)在客户端执行此操作,也可以使用某种服务器端模板或脚本技术(如NodeJS(JavaScript)、PHP(PHP)、ASP.Net(各种语言)在服务器端执行此操作,也请注意DOM与ajax无关。DOM是内存中文档的模型。
//place any opening javascript code here if necessary.
<?php
     // open a file using the fopen function
     // read each line of the file using the fgets function
     // convert each line into your appropriate javascript code such as an array etc.
     // echo the javascript code
//place any closing javascript code here if necessary.
<script src="myscript.php"></script>