在 JS 中 无 法 直 接 读 取 JSON 是 因 为 跨 域 的 问 题 , 但 是 只 要 PHP 设 置 跨 域 , 就 可 以 让 JS 不 使 用 AJAX 直 接 读 取 , 而 且 JS 相 比 PHP 中 的 file_get_contents 函 数 , 处 理 速 度 要 快 很 多 。

  fetch("https://api.muiki.cn/api/wyrp/?encode=json")
      .then(res => res.json())
      .then(data => ceshi.innerText = data.msg);

这 段 代 码 中 第 一 行 是 需 要 获 取 的 域 名 。 [ 返回如下 ]

我 这 里 已 经 允 许 我 的 接 口 全 部 跨 域 了 , 所 以 JS 不 使 用 AJAX 也 是 可 以 获 取 的 。
如 果 你 需 要 返 回 的 JSON 是 在 本 地 的 话 , 也 不 需 要 允 许 跨 域 , 直 接 引 用 相 对 路 径 就 可 以 了 。
这 段 代 码 的 第 三 句 ceshi 的 意 思 是 把 第 二 句 中 打 乱 的 数 组 的 一 个 值 定 义 在 一 个 变 量 上 。
将 需 要 输 出 的 文 字 标 签 附 带 一 个 ID 属 性 , 比 如 :

<p id="ceshi"></p>


到 这 里 已 经 看 到 可 以 输 出 了 , 我 这 里 给 大 家 提 供 一 下 PHP 允 许 跨 域 的 代 码 。

header('Access-Control-Allow-Origin:*');

这句代码是默认允许全部域名跨域,如果需要限制域名把 * 改 成 需 要 允 许 跨 域 的 域 名 , 多 个 域 名 可 以 使 用 , 分 割 开 。

最后修改:2020 年 06 月 26 日 02 : 16 PM