繁体   English   中英

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

[英]How to load a REST call through a script tag

我知道这有点奇怪,但是我去了。 我正在编写一个将切换环境(开发,测试,生产等)的应用程序。 我需要在切换环境时更改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"}

另一种选择是不使用脚本标签执行此操作,而只是使用ajax调用编写内联javascript。 如果您使用jQuery,它将看起来像:

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

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

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

您的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM