如何通过脚本标记加载REST调用

How to load a REST call through a script tag

本文关键字:加载 REST 调用 何通过 脚本      更新时间:2023-09-26

我知道这个问题有点奇怪,但我来了。我正在编写一个将切换环境(开发、测试、生产等)的应用程序。我需要REST调用的基本URL在切换环境时进行更改。好吧,我们目前的解决方案(我一直在寻找更好的解决方案)是一个本地REST调用,询问服务器我所处的环境以及我应该为我的基础使用什么URL。外部REST调用与前端完全分离。

使用本地REST调用,我可以执行ajax调用以在javascript中的某个位置获取数据,或者我可以包括如下REST调用:

<script src="/rest/configs"></script>

上述解决方案的问题是,它返回一个未分配给变量的对象,从而引发错误。所以我的问题是,你能通过脚本标记直接将REST调用加载到变量中吗?如果可以,如何加载?

如果使用脚本标记,则请求的响应(根本不是AJAX)将被解析并作为javascript执行。

您可以做的是返回有效的Javascript,而不是JSON对象。类似的东西

window.config = {"env":"test"};

而不是

{"env":"test"}

另一种选择是不使用script标记,只使用ajax调用编写内联javascript。如果你使用jQuery,它看起来像:

<script>$.get("/rest/configs", function(config) { window.config = config; });</script>

这将执行Ajax调用,并将其分配给全局变量config。当然,您应该进行一些调整,并在执行后执行其余的javascript。

无论如何,作为一种标准,这个值通常在脚本中进行硬编码。我建议创建一个针对测试/dev/生产环境进行修改的脚本。

您的rest调用不能只返回一个Javascript对象吗

var env = "experimental";

您的网页应该能够将其解释为Javascript,并且env变量应该可以在页面的其余部分使用:

<html>
    <head>
        <script type="text/javascript" src="/rest/configs"></script>
        <script type="text/javascript">
            console.log("env: " + env); // prints env: experimental
        </script>
    </head>
    <body></body>
</html>