AJAX

325次阅读
没有评论

共计 3170 个字符,预计需要花费 8 分钟才能阅读完成。

AJAX 插件使用说明

概述

AJAX 插件允许你获取 URL 的内容或向网站发送数据。你还可以使用它来加载项目文件。其名称源自“异步 JavaScript 和 XML”,这是大多数 Web 开发人员所熟悉的技术。

脚本编程

由于在使用 JavaScript 或 TypeScript 编码时,你可以使用浏览器内置的 Fetch API 进行网络请求,因此此对象没有脚本接口。

如何发起请求

AJAX 对象的基本用法包括:

  1. 使用 Request 动作加载 URL。
  2. 在请求完成后,On completed 触发器会稍后启动。
  3. LastData 表达式可用于访问响应内容。
  4. tokenat 系统表达式可能对拆分简单响应非常有用。或者,你可以使用其他插件(如 XML 对象)以其他格式读取 LastData,例如加载数组数据等。

标签

每个请求可以提供不同的标签。这是一个你设置的简单字符串,用于区分不同的请求。例如,启动时你可能同时请求 foo.json(带有 "foo" 标签)和 bar.json(带有 "bar" 标签)。当第一个请求完成时,触发 On "foo" completed;当第二个请求完成时,触发 On "bar" completed。请求可能会以与它们被发出的顺序不同的顺序完成,因此如果没有标签,将无法确定哪个请求正在完成。

跨域或预览中的 AJAX 请求

默认情况下,浏览器会阻止跨域的 AJAX 请求。这意味着,例如,construct.net 上的游戏可以请求 construct.net 上的其他页面,但不能请求 facebook.com 上的页面。这是 Web 浏览器的重要安全功能(它不特定于 Construct 或其 AJAX 对象)。

此外,当在 Construct 中预览时,游戏在其自己的域 preview.construct.net 上运行。因此,除非服务器明确允许跨域请求,否则对任何其他域的 AJAX 请求在预览期间通常会失败。

如果你希望你的服务器从任何域接收 AJAX 请求,或在预览中工作,你可以配置服务器发送以下 HTTP 标头:

Access-Control-Allow-Origin: *

这将启用来自任何域的 AJAX 请求,但你仍应意识到这可能带来的安全隐患。有关跨域请求的更多信息,请参阅 MDN 上的 HTTP 访问控制(CORS)。

使用 HTTPS

由于 preview.construct.net 在安全服务器(HTTPS)上运行,因此在预览中不能向不安全的服务器(HTTP)发起 AJAX 请求。浏览器出于安全原因阻止了这一点。你可能会看到与“混合内容”相关的警告,即指此问题。

因此,为了使跨域 AJAX 请求在预览模式下工作,你还必须确保你的服务器是安全的(使用 HTTPS)。在现代网络上,无论如何这都是最佳实践,特别是因为许多其他功能仅在安全服务器上工作。

在 NW.js 中

使用 NW.js 导出桌面应用程序时,AJAX 对象还可以从应用程序文件夹加载文件。只需使用 Request URL 动作并输入与应用程序同一目录中的文件名,例如 "example.txt"。请注意,如果存在具有相同名称的项目文件,则将始终加载项目文件。

MIME 类型

对你的服务器进行文件的 AJAX 请求需要你的服务器设置了正确的 MIME 类型。

二进制数据

AJAX 对象可以以二进制形式接收资源,也可以使用 Binary Data 对象发布二进制数据。这还用于获取本地资源(如 canvas 快照 URL 或视频录制 URL),并将其加载到 Binary Data 对象中以执行其他操作,如保存到存储或上传到服务器。

AJAX 条件

On completed
当具有相同标签的请求成功完成时触发。LastData 表达式包含响应,除非使用了 Set response binary 动作,在这种情况下选定的 Binary Data 对象现在包含响应。
On any completed
当任何请求成功完成时触发。Tag 表达式标识请求,LastData 包含响应。
On error
当具有相同标签的请求失败时触发。这可能是由于多种原因,例如服务器宕机或请求超时。(由于没有响应,LastData 表达式未设置。)
On any error
当任何请求失败时触发。Tag 表达式标识请求。
On progress
对于长时间运行的请求(例如下载大文件),On progress 定期触发并使用 Progress 表达式更新请求的状态。这对于为 AJAX 请求创建进度条很有用。

AJAX 动作

Override MIME type
在某些情况下,你可能需要将服务器的响应解释为与服务器指示的 MIME 类型不同的类型。例如,配置错误的服务器可能返回错误字符集的文本文件,你希望强制将响应解释为 UTF-8。在这种情况下,你可以覆盖 MIME 类型为 text/plain; charset=utf- 8 以避免文本混乱。此动作仅适用于下一个发出的 AJAX 请求,之后 MIME 类型将恢复为默认设置,接受服务器响应指示。
Post to URL
Post binary to URL
向 URL 发送带有数据的请求并检索响应。提供一个标签以将其与 On completed、On progress 和 On error 触发器匹配。二进制变体可以将 Binary Data 对象的内容发布到服务器;否则使用字符串。Construct 不会自动对字符串进行 URL 编码 – 使用 URLEncode 系统表达式确保数据以适合发布的格式。注意字符串数据与查询字符串的格式相同,例如 "foo=1&bar=2"。还可以指定方法:默认为 POST,但对于某些 API,你可能需要将其更改为 PUT、DELETE 或另一个 HTTP 方法。
Request URL
发送 GET 请求以检索 URL 的内容。提供一个标签以将其与 On completed、On progress 和 On error 触发器匹配。
Request project file
请求项目文件的内容。提供一个标签以将其与 On completed、On progress 和 On error 触发器匹配。
Set request header
在下一个发出的 AJAX 请求上设置 HTTP 标头。在下一个 AJAX 请求之后,使用此动作设置的所有标头都将再次清除,因此它只生效一次。
Set timeout
设置请求必须完成的秒数;如果超时到期且请求未成功完成,它将失败并触发 On error。此动作仅影响后续请求,并不影响已经开始的任何请求。如果超时设置为 -1,则恢复默认浏览器超时。
设置凭据
为下一个 AJAX 请求设置“with credentials”属性。在下一次 AJAX 请求后,该设置将恢复为默认值(关闭),因此它只生效一次。启用时,发送带有凭据的请求将使用 cookies 和授权头等凭据进行跨站点请求。在内部,这将设置 XMLHttpRequest 的 withCredentials 属性。更多详情可以在 MDN withCredentials 文档中找到。

设置响应二进制
在 Request 操作之前使用此操作,以将响应读入 Binary Data 对象,而不是将其作为字符串返回到 LastData 表达式。这使得可以直接获取和处理非文本资源,如图像。

AJAX 表达式

LastData
上次响应的内容。这在 On completed 触发器中设置。注意,如果使用了 Set response binary,则响应位于所选的 Binary Data 对象中,此表达式将返回空字符串。
LastStatusCode
上次响应的 HTTP 状态码,例如 200 表示 OK,404 表示 Not Found。这在 On completed 触发器中设置。你可以在 MDN 页面 HTTP response status codes 上找到可能的状态代码及其含义的完整列表。

Progress
在 On progress 事件中返回 AJAX 请求的进度。进度表示为 0 到 1 的数字,例如 0.5 表示完成一半。
Tag
触发器中的 AJAX 请求标签。这对于在 On any completed 或 On any error 中识别请求非常有用。

正文完
 0
评论(没有评论)