2017-01-10 9 views
0

関数名が現在のコンテキストに存在しないということは、それが私に与えるエラーです。私は動的なAJAX呼び出しをしたい。なぜこれが起こるのですか?ハンドラはサーバー側で処理されますが、この問題を回避する方法はわかりません。それは、メンテナンスの悪夢に変わりますなぜこれを行うことができないのですか?

$.ajax({ 
    type: "GET", 
    url: '@Url.Action(functionName, "AdminTools")', //THIS 

var getManager = function (functionName, contentDiv) { 
    console.log("aircraft manager refresh called"); 
    $.ajax({ 
     type: "GET", 
     url: '@Url.Action(functionName, "AdminTools")', 
     cache: false, 
     data: {}, 
     error: function() { 
      alert("An error occurred."); 
     }, 
     success: function (data) { 
      $("#".concat(contentDiv)).html(data); 
     } 
    }); 
} 
+3

これは動作しません。 '@ Url.Action'呼び出しは* server-side *で呼び出されます。あなたのスクリプトが実行されるまでには、実際には実際のURLに置き換えられました – haim770

+2

JavaScriptのURLを使用して文字列を作成するだけです。AdminTools/"+ functionName" – Jasen

+0

ヘルパーをパラメータとして配置することを検討していました。 ajax呼び出しのハードコードURLに悪い練習ですか? –

答えて

5

私は非常にあなたが好きではないカップル、サーバー側とクライアント側のコードを実行しますお勧めします。代わりに:あなたは、複数のcontentdivsそれぞれを持って、後で決定した場合、その後

<div id="#contentDiv" data-url="@Url.Action(functionName, "AdminTools")"> 
@* content *@ 
</div> 

var getManager = function (functionName, contentDiv) { 
    console.log("aircraft manager refresh called"); 
    var url = contentDiv.data("url"); 
    $.ajax({ 
    type: "GET", 
    url: url, 
    // ..... 

は、それが自分のURL持つことができ、あなたのコードは再利用可能です。

+0

すばらしい答え!私のUpVoteを手に入れました。 Clarityのために、関数構造体から "functionName"パラメータを削除できますか? "var getManager = function(contentDiv){ ........... " – DaniDev

+0

これは抽象的な答えで、情報をどのように切り離すかを示しています。現在の問題に固有のものが必要な場合は、Ask A Questionボタンを使用することを強くお勧めします。さもなければ、これらのコメントは、この質問の話題ではない質問についてあまりにも多くの話をするでしょう。 –

+0

いいえ、私はちょうど混乱しないようにパラメータ(functionName)を削除する価値があると思った問題に取り組んでいます。;-) あなたの応答に感謝します。 – DaniDev

関連する問題