如何将数据从 c# 传递到 jquery/javascript

本文关键字:jquery javascript 数据 | 更新日期: 2023-09-27 18:32:32

我有一个函数,我想在页面加载时运行,所以要么在document.ready要么在pageLoad中。

使用

jquery,我将使用函数的类名触发该函数

在文档中.就绪

var span = $('.linkify');
span.html(textToLinks(span.html()));

别处

function textToLinks(text) {
    var exp = /(my text)/ig;
    return text.replace(exp, "<a class='link' href='http://www.bbc.co.uk' target='_blank' >$1</a>");

}

现在这适用于简单的测试数据,但我现在需要弄清楚如何扩展功能。

我的 c# 应用中有一个术语列表以及相关的 URL。我正在考虑将此数据作为字符串传递并拆分,但是我的JavaScript知识有很多漏洞。

所以我想我有 3 个问题:

  1. 加载页面时,如何将字符串放入函数中?
  2. 字符串的类型是否正确,或者我可以传递其他字典对象吗?
  3. 如何有效地循环访问传递的每个术语?

提前谢谢。

如何将数据从 c# 传递到 jquery/javascript

你可以做的是,使用 JQuery Ajax 调用来检索服务器端数据。

但这需要您设置将公开的服务。您可以通过快捷方式执行此操作,而无需设置服务。

但这需要混乱的逻辑。(这是捷径:))

您可以在页面中创建一个属性,将 JSON 数据公开为字符串。您可以通过以下方式读取 JavaScript 中的 JSON 数据

var data =<% GetData() %>

您可以在对象上定义 ToJson 以将对象转换为 JSON 字符串

    public static string ToJSON(this object obj)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer(new SimpleTypeResolver());
        return serializer.Serialize(obj);
    }
public string GetData()
{
    return (new {SomeData}).ToJson();
}

注意 SomeData 是一个包含您的数据(即 url 数组)或您选择的任何表示形式的类。

然后循环数据以构建动态 html

@Anand是正确的,你可以使用jQuery Ajax来检索服务器端数据。

但是,根据您想要执行的操作,您也许可以以另一种方式执行此操作。

可以使用 .net JavascriptSerializer类将数据序列化为 JSON 格式。 JSON是一个非常好的工具,如果你还不熟悉它,可以熟悉它。

JavascriptSerializer 会将您的 JSON 放在一个字符串中,然后您可以将其放入隐藏的输入中并使用您的 Javascript 代码读取。 这样做的好处是不需要第二个HTTP请求,就像jQuery Ajax一样。

如果您在加载页面时提前获得了数据,则可以将 JSON 直接写入页面,然后使用该 javascript 对象执行任何您需要的操作。

我不知道你使用的是MVC还是WebForms,但想法基本相同:

例如(使用 JSON.NET 进行序列化):

<script id="some-data" type="application/json">
    <%= JsonConvert.SerializeObject(someDotNetObject) %>
</script>
<script type="text/javascript">
    var _someJsObject = JSON.parse(document.getElementById("some-data").innerHTML);
</script>

现在_someJsObject是一个javascript对象,代表你开始使用的数据,你可以用它做任何你想做的事情,比如循环遍历数组等。

旁注 - 如果你的目标是IE7,你需要使用类似json2.js的东西来获取JSON解析。

另一种可能的方法是在 C# 代码中的页面加载时编写 javascript 函数。然后,这将在呈现时添加到页面中,并且可以由 document.ready() 上的 jQuery 执行;或任何其他功能/事件。

示例代码:

    string FunctionStr = "<script type='"text'javascript'">function textToLinks(text) {" +
        "var exp = /(my text)/ig;" +
        "return text.replace(exp, '"<a class='link' href='http://www.bbc.co.uk' target='_blank' >$1</a>'");" +
        "}</script>";
    this.ClientScript.RegisterClientScriptBlock(this.GetType(), "Some JS Function", FunctionStr);

阿南德和丹尼尔的答案可能更适合您想要的方法,但如果您想要的话,这是第三种选择。

你可以

这样做:

在代码隐藏的 C# 类中声明公共成员

public string mystring;

在初始化或加载事件中启动它并将其写在你的js函数上

var exp = '<%=mystring %>';

它应该适用于字符串。对于字典,你可以尝试做Ajax