Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 AJAX在本地主机上不工作_Javascript_Ajax - Fatal编程技术网

Javascript AJAX在本地主机上不工作

Javascript AJAX在本地主机上不工作,javascript,ajax,Javascript,Ajax,我试图让一个AJAX示例正常工作,但无法正常工作。你能在XAMPP上运行它吗 我有三个文件,message.txt、index.html和ajaxtest.js。当你点击超链接时,它会弹出一个包含message.txt内容的弹出窗口。所有文件都在同一目录中 index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

我试图让一个AJAX示例正常工作,但无法正常工作。你能在XAMPP上运行它吗

我有三个文件,message.txt、index.html和ajaxtest.js。当你点击超链接时,它会弹出一个包含message.txt内容的弹出窗口。所有文件都在同一目录中

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
  <head>
  <title> Using XMLHttpRequest</title>
  <script type="text/javascript" src="ajaxtest.js"></script>
  </head>
  <body>
    <p>
      <a href="message.txt" onclick="grabFile(this.href); return false;">
Click here
</a>
</p>
</body>
</html>

出于安全原因,JavaScript对客户端文件系统的访问受到限制!你可以

如果使用google chrome,则必须使用-allow file access from files命令启动可执行文件:

FireFox可能也有类似的配置

更新: 查看您的代码,我发现您正在将request.status与OK200进行比较,而不是修改304头!这些是从web服务器返回的HTTP响应头,因此在web服务器上运行代码时,必须检查响应头,否则,使用file:///协议在本地运行时,响应头始终为0

这里有一个解决方法,您可以检查域,如果您在本地运行,则无需检查响应状态:

function displayResponse(request) {
  if (request.readyState == 4) {
    if (!document.domain || request.status == 200 || request.status == 304) {
      alert(request.responseText);
    }
  }
}

出于安全原因,JavaScript对客户端文件系统的访问受到限制!你可以

如果使用google chrome,则必须使用-allow file access from files命令启动可执行文件:

FireFox可能也有类似的配置

更新: 查看您的代码,我发现您正在将request.status与OK200进行比较,而不是修改304头!这些是从web服务器返回的HTTP响应头,因此在web服务器上运行代码时,必须检查响应头,否则,使用file:///协议在本地运行时,响应头始终为0

这里有一个解决方法,您可以检查域,如果您在本地运行,则无需检查响应状态:

function displayResponse(request) {
  if (request.readyState == 4) {
    if (!document.domain || request.status == 200 || request.status == 304) {
      alert(request.responseText);
    }
  }
}

正如我在您的示例中尝试的那样,您的请求对象没有达到状态4并再次使用。 在下面的代码之前检查request.status,其值始终为0。这就是为什么您的脚本没有提醒响应

if (request.status == 200 || request.status == 304) {
  alert(request.responseText);
}
检查此项以了解您的解决方案:


希望有帮助。

正如我在您的示例中尝试的那样,您的请求对象没有达到状态4并再次使用。 在下面的代码之前检查request.status,其值始终为0。这就是为什么您的脚本没有提醒响应

if (request.status == 200 || request.status == 304) {
  alert(request.responseText);
}
检查此项以了解您的解决方案:



希望您能提供帮助。

当您单击链接时,它的行为与此完全相同,并将我带到一个包含message.txt文件内容的新页面。您在控制台中遇到了什么错误?您的问题尚不清楚。你收到错误信息了吗?什么是预期行为/获得行为?对不起,我不知道你所说的控制台是什么意思?正如我在问题中所说,它应该会弹出一个包含文本文件内容的弹出窗口,我在之前的评论中也说过,此时它将带我进入包含文本文件内容的新页面。没有出现错误消息,我只是复制了代码并运行了它。除了message.txt上出现404错误外,它还按预期工作。该链接未被跟踪。当您单击该链接时,它的行为与此完全相同,并将我带到一个包含message.txt文件内容的新页面。您在控制台中遇到的错误是什么?您的问题不清楚。你收到错误信息了吗?什么是预期行为/获得行为?对不起,我不知道你所说的控制台是什么意思?正如我在问题中所说,它应该会弹出一个包含文本文件内容的弹出窗口,我在之前的评论中也说过,此时它将带我进入包含文本文件内容的新页面。没有出现错误消息,我只是复制了代码并运行了它。除了message.txt上出现404错误外,它还按预期工作。链接没有被跟踪。在Linux中我该怎么做?我尝试输入google chrome-允许从终端中的文件访问文件,但当我单击链接时,我仍然存在一个问题,即没有弹出显示内容的弹出窗口,而是将文件内容带到另一个页面。在执行刚刚测试的新命令行之前,您需要关闭google chrome的所有实例,在windows命令行上,启动chrome.exe-允许从文件访问文件工作正常。当我尝试在终端中运行该命令时,链接完全停止工作。它没有停止工作,它返回状态为0,注释掉检查状态的代码行,您将得到我在Linux中如何做的结果?我尝试输入google chrome-允许从终端中的文件访问文件,但当我单击链接时,我仍然存在一个问题,即没有弹出显示内容的弹出窗口,而是将文件内容带到另一个页面。在执行刚刚测试的新命令行之前,您需要关闭google chrome的所有实例,在windows命令行上,启动chrome.exe-允许从文件访问文件仅在我尝试在术语中运行该命令时有效
最后,链接完全停止工作。它没有停止工作,它返回时状态为0,注释掉检查状态的代码行,您将得到结果