XMLHttpRequest
This article describes a feature or macro function that is experimental and may be subject to change.
XMLHttpRequest() Function
XMLHttpRequest
API.Usage
let x = new XMLHttpRequest();
x.open(method, target, nonblocking, user, password);
Parameters
method
- HTTP Method to emulate.GET
for assets/library resources,POST
for macro calls.target
- The macro to call or asset to retrieve.lib://<libraryName>/macro/<macroName>
style lib-URIs work, as doasset://<asset-hash>
(as returned by the getImage() function). Macros use a locationless-URImacro:macroName@macroLocation
.nonblocking
- True if theXMLHttpRequest
should not block the JavaScript frame. Default istrue
. BlockingXMLHttpRequest
s should generally not be used.user
- Username, as a string. For compatibility with theXMLHttpRequest
API, but unused.password
- Password, as a string. For compatibility with theXMLHttpRequest
API, but unused.
Note you cannot use XMLHTTPRequest
s to fetch external resources. HTTP/HTTPS is not supported. Aside from the custom target URIs, XMLHttpRequest
s should work like native ones living in a browser. You can set response types, pass custom headers, and so on.
If calling a macro, the special variable macro.args within the macro contains the body of the request. The special variable macro.return is ignored in the response (it may be used to set an HTTP Response Code at a future date). All output of the macro ([r: ]
blocks and the like) are gathered into the response body.
Request headers are available in the macro via the special variable macro.requestHeaders, which is a JSON object mapping the headers (as strings) to their values (as strings).
Likewise, response headers generated by the macro should be stored into macro.responseHeaders where they will be accessible in JavaScript. The magic header :Status
can be used to set the HTTP response code of the request. It is removed from the response headers before they are attached to the XMLHttpRequest() object.