2015-03-30 45 views
1

我明白,这有点奇怪的问题,但我在这里。我正在编写一个将切换环境的应用程序(开发,测试,产品等)。我需要REST调用的基本URL才能在切换环境时进行更改。那么,我们目前的解决方案(以及我更好的解决方案)是一个本地REST调用,询问服务器我在哪个环境以及我应该为我的基础使用哪个URL。外部REST调用与前端完全分离。如何通过脚本标记加载REST调用

随着本地REST调用我可以做一个AJAX调用在我的javascript某处获得数据或者我可以包括REST调用如下:

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

上述解决方案的问题是,它返回未分配给变量的对象因此引发错误。所以我的问题是,你能否通过脚本标记直接将REST调用加载到变量中,如果是这样,怎么办?

回答

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调用,并将其分配给一个全局变量的配置。当然,你应该做一些调整,并在执行后执行其余的javascript。

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

0

无法将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>