在没有服务器的情况下处理POST或GET请求

时间:2019-02-01 18:50:07

标签: javascript ajax

我正在阅读以下文章:

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data

在这里,将说明AJAX的概念,为了简单说明起见,不是从服务器连接内容,而是从装有浏览器的系统中获取内容。

因此,在上述链接的以下代码行中:

var url = verse + '.txt';
var request = new XMLHttpRequest();
request.open('GET', url);

这里的GET动词是获取本地系统中文件的内容,并且那里没有服务器。

同样,通过使用javascript并在没有服务器的情况下 我们可以在GET或POST动词中添加一些参数并在本地系统中运行代码来处理这些参数并发送输出吗。

赞:

var url =  'verse + '.txt' + '?' 'name = ' + 'vim' ; //Adding parameters

,并且会有一些javascript文件,该文件带有这些参数“ name” 并以大写形式返回它,例如“ VIM”。

我们是否可以仅使用Javascript(而不是nodejs或设置服务器“的任何东西)来做类似的事情而无需服务器监听?

1 个答案:

答案 0 :(得分:0)

要达到要求,您可以使用设置了--allow-file-access-from-files标志的Chromium或Chrome浏览器。

fetch()不允许请求具有file:协议的本地文件,尽管XMLHttpRequest()允许。 fetch()确实允许请求data URLBlob URL

对于

  

一些javascript文件,该文件接受这些参数“名称”并返回   大写字母,例如“ VIM”

Worker可用于获取本地文件的内容,操作内容,然后可以调用postMessage()与主线程进行通信。

例如

worker.js

onmessage = e => {
  // do stuff
  let url = new URL(e.data);
  let [[,param]] = [...url.searchParams]; // get query string parameter `'vim'`
  let request = new XMLHttpRequest();
  request.open('GET', 'file:///path/to/local/file' /* e.data */);
  request.onload = e => {
    console.log(request.responseText); // `setTimeout()` can be inside `load` handler
  }
  request.send();
  // asynchronous response
  setTimeout(() => {
    // set `data URL` that `fetch()` will request
    postMessage(`data:text/plain,${param.toUpperCase()}`);
  }, Math.floor(Math.random() * 2000));
}

consolescript

const localRequest = async(url) => {
  const request = await fetch(await new Promise(resolve => {
    const worker = new Worker('worker.js');
    worker.onmessage = e => {
      resolve(e.data);
      worker.terminate();
    }
    worker.postMessage(url);
  }));
  const response = await request.text();
  console.log(response);
}

localRequest('file:///verse.txt?name=vim');