2016-04-14 15 views
1

マスターページからクリックした言語のタイプをApp_codeフォルダのsurfacecontrollerに送信しようとしています。私のHTMLは以下のようである:Jquery Ajax a hrefがクリックされたときにメソッドにデータを送信するための呼び出し

<div class="navbar-topbar clearfix"> 
    <div class="h5 pull-right"> 
     <span class="linkCA"> 
      <strong>CA</strong> 
      <a class="lang=en-CA" href="@NewUrlLink">EN</a> | 
      <a class="lang=fr-CA" href="@NewUrlLink">FR</a> 
     </span> 
     <span class="linkUS"> 
      <strong>US</strong> 
      <a class="lang=en-US" href="@NewUrlLink">EN</a> 
     </span> 
    </div> 
</div> 

それでは、私はクラス名を取得し、aがクリックされたときにAJAX呼び出しを経由して、それを送信されて考えています。私は言語の種類を渡したい、このメソッドは、クリックされました:私は、私は必要なもののように見えるこのAJAX方法をオンラインで見たが、私は私の必要性と動作するように配線する方法がわからない

public string GetDictionaryItemByCulture(string key, string language) 
{ 
    var currentLang = System.Threading.Thread.CurrentThread.CurrentCulture.ToString(); 
    var otherLang = myCulture(language); 
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(otherLang); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(otherLang); 

    // String noLastSegment = Request.Url.AbsolutePath; 
    string x = new UmbracoHelper().GetDictionaryValue(key); 

    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(currentLang); 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(currentLang); 

    return x; 
} 

$(document).ready(function() { 
    // Add the page method call as an onclick handler for the div. 
    $("#Result").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/GetDate", 
      data: { someParameter: "some value" }, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       // Replace the div's content with the page method's return. 
       $("#Result").text(msg.d); 
      } 
     }); 
    }); 
}); 

答えて

0

まず、イベントハンドラがに取り付けることができる共通クラス与えられた各aで、あなたのHTML内data-*属性にロケール値を配置するために、より良い練習になります。From

<div class="navbar-topbar clearfix"> 
    <div class="h5 pull-right"> 
     <span class="linkCA"> 
      <strong>CA</strong> 
      <a data-lang="en-CA" class="lang-trigger" href="@NewUrlLink">EN</a> | 
      <a data-lang="fr-CA" class="lang-trigger" href="@NewUrlLink">FR</a> 
     </span> 
     <span class="linkUS"> 
      <strong>US</strong> 
      <a data-lang="en-US" class="lang-trigger" href="@NewUrlLink">EN</a> 
     </span> 
    </div> 
</div> 

そこにあなたはaのクリックにフックすることができますdata-lang属性を読んで、情報をお送りください:

$('.lang-trigger').click(function() { 
    var $a = $(this); 
    $.ajax({ 
     type: "POST", 
     url: "GetDictionaryItemByCulture/", 
     data: { 
      key: 'whatever this value should be...', 
      lang: $a.data('lang') 
     }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      console.log(msg); 
     } 
    }); 
}); 
関連する問題