javascript - 单击 a href 时 Jquery Ajax 调用将数据发送到方法

标签 javascript jquery asp.net-ajax c#-3.0 umbraco7

我正在尝试将从我的母版页单击的语言类型发送到 App_code 文件夹中的 surfacecontroller。我的 HTML 如下所示:

<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 调用发送它。我有这个方法,我想将单击的语言类型传递给:

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;
}

我在网上看到了这个 AJAX 方法,它看起来像我需要的,但我不知道如何连接它来满足我的需要。

$(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);
            }
        });
    });
});

最佳答案

首先,最好将语言环境值放置在 HTML 中的 data-* 属性中,每个 a 都给定一个事件处理程序可以使用的公共(public)类附于:

<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);
        }
    });
});

关于javascript - 单击 a href 时 Jquery Ajax 调用将数据发送到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626677/

相关文章:

javascript - 确定一个字符串是否是一个有效的 jQuery 选择器?

javascript - Onload 在 IE 上不起作用

asp.net - 将耗时的操作移出页面加载

asp.net-mvc-3 - 从 Ajax.BeginForm 调用 ActionResult

javascript - 无法解析 socket.io 回调中的 promise

javascript - 页面加载后如何调用JQuery函数?

jquery - Handsontable 在编辑后刷新除编辑单元格之外的整个列

jquery - 选择并读取 XML 文件(客户端)

javascript - 单击和克隆时间选择器无法工作

asp.net - 嵌套的 UpdatePanel 导致父级回发?