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

时间:2015-03-30 21:44:01

标签: javascript rest

我明白这个问题有点奇怪,但我在这里。我正在编写一个将切换环境的应用程序(dev,test,prod等)。我需要在我切换环境时更改REST调用的基本URL。好吧,我们当前的解决方案(我更倾向于更好的解决方案)是一个本地REST调用,询问服务器我在哪个环境以及我应该为我的基础使用什么URL。外部REST调用完全与前端分离。

通过本地REST调用,我可以执行ajax调用以在我的javascript中获取数据,或者我可以包含REST调用,如下所示:

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

上述解决方案的问题在于它返回一个未分配给变量的对象,从而抛出错误。所以我的问题是,你可以通过脚本标记直接加载一个REST调用变量,如果是,那么如何?

2 个答案:

答案 0 :(得分:2)

如果使用脚本标记执行此操作,请求的响应(根本不是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。

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

答案 1 :(得分:0)

你的休息电话只能返回一个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>