我有一个函数,我想在页面加载时运行,所以在document.ready或pageLoad中。
使用jquery,我将使用其类名
触发该函数在document.ready
中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#app中有一个术语列表,以及相关的网址。我正在考虑将这些数据作为一个字符串传递,然后拆分,但是我的javascript知识有很多漏洞。
所以我想我有3个问题:
提前致谢。
答案 0 :(得分:1)
您可以使用JQuery Ajax调用来检索服务器端数据。
但这需要您设置可能会暴露的服务。您可以通过快捷方式完成设置服务。
但这需要凌乱的逻辑。(这是一个捷径:))
您可以在页面中创建一个属性,将JSON数据公开为字符串。您可以按照
在javascript中读取JSON数据var data =<% GetData() %>
您可以在对象上定义ToJson以将对象转换为JSON String
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
答案 1 :(得分:1)
@Anand说的是你可以使用jQuery Ajax来检索服务器端数据。
但是,根据您想要做的确切内容,您可以采用其他方式。
您可以使用.net JavascriptSerializer
类将数据序列化为JSON格式。如果您还不熟悉JSON,那么JSON是一个非常好的工具。
JavascriptSerializer
会将您的JSON放入一个字符串中,然后您可以将其放入隐藏的输入中并使用您的Javascript代码进行读取。这样做的好处是不需要第二个HTTP请求,就像jQuery Ajax一样。
答案 2 :(得分:1)
另一种可能的方法是在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);
Anand和Daniel的答案可能更适合您想要的方法,但如果您愿意,这是第三种选择。
答案 3 :(得分:1)
你可以这样做:
将公共成员声明为
背后代码的C#类public string mystring;
在Init或Load Event中启动它 并在你的js函数上写下
var exp = '<%=mystring %>';
它应该适用于字符串。对于Dictionnary,您可以尝试执行Ajax
答案 4 :(得分:0)
如果您在加载页面时提前获得了数据,则可以直接将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解析。