0

I have some jQuery code that looks like this:

$.post("/myapp/mycontroller/save", { myObject: JSON.stringify(jsonObject) })
    .done(function(data) {
        $("#successmsg").text(data);
        $("#successmsg").show();
    });

This all works fine on my local environment because name of my app when running on local environment is myapp

However, when I deploy to test environment, the name of the app is mytestapp so this code fails to work on test environment.

How do I resolve this problem? How can I simply take out the app name?

4

5 回答 5

0

我会避免指定基本 url,除非你必须(来自另一个应用程序的 Ajax 调用)。

如果您的电话来自同一个应用程序,那么您的问题应该可以通过执行以下操作轻松解决:

$.post("${g.createLink(controller:'mycontroller', 
        action: 'save')}", 
        { myObject: JSON.stringify(jsonObject) })
    .done(function(data) {
        $("#successmsg").text(data);
        $("#successmsg").show();
    });
于 2013-03-09T14:51:13.697 回答
0

您的服务器 url 应该已经在您的配置中定义(grails-app/conf/Config.groovy除非您已更改它):

grails.serverURL = "http://localhost:8080/myapp"

然后在你的布局中(默认情况下,主布局是grails-app/views/layouts/main.gsp

<g:javascript>var baseURL = '${grailsApplication.config.grails.serverURL}';</g:javascript>

然后baseURL可以在你的任何.js文件中访问。

于 2013-03-09T03:36:21.720 回答
0

使用url解析

var context = window.location.href.split('/')[3]
$.post("/"+context+"/mycontroller/save", ...

我在一家铁路商店工作,这是一个经常出现的问题。这每次都能解决它,并在每个项目中使用。

于 2013-03-09T00:19:29.310 回答
0

将此添加到您的 html 中:

<script>
$(function() {
     var baseUrl = //YourDynamicallyGeneratedBaseURL;
});
</script>

和 Ajax 调用会是这样的:

$.post(baseUrl + "/mycontroller/save", ...
于 2013-03-09T00:20:05.950 回答
0

您可以<base>为所有相对 URL 使用具有基本 URL 的元素。

<base href="/myapp/">

通过这种方式,您可以以不同方式控制生产和开发环境的基本 URL。

例如,您的 AJAX URL 将变为:

$.post("mycontroller/save", {
  ...
});
于 2013-03-09T00:26:06.803 回答