0

次のようなjQueryコードがあります。

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

ローカル環境で実行中のアプリの名前はmyapp

ただし、テスト環境にデプロイすると、アプリの名前が にmytestappなるため、このコードはテスト環境で動作しません。

この問題を解決するにはどうすればよいですか? アプリ名を簡単に取り出すにはどうすればよいですか?

4

5 に答える 5

0

<base>すべての相対URLのベースURLを持つ要素を利用できます。

<base href="/myapp/">

このようにして、本番環境と開発環境のベースURLを異なる方法で制御できます。

たとえば、AJAXURLは次のようになります。

$.post("mycontroller/save", {
  ...
});
于 2013-03-09T00:26:06.803 に答える
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

必要がない限り、ベース 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 に答える