如何将数据从c#传递到jquery / javascript?
我有一个函数,我想在页面加载时运行,所以在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, "$1");
}
现在这适用于简单的测试数据,但我现在需要弄清楚如何扩展function。
我的c#app中有一个术语列表,以及相关的url。 我正在考虑将这些数据作为字符串传递,然后拆分,但是我的javascript知识有很多漏洞。
所以我想我有3个问题:
- 如何在加载页面时将我的字符串放入函数中?
- 字符串是正确的类型还是我可以传递一些其他字典对象?
- 如何有效地遍历每个传递的术语?
提前致谢。
@Anand是正确的说你可以使用jQuery Ajax来检索服务器端数据。
但是,根据您想要做什么,您可能可以采用另一种方式。
您可以使用.net JavascriptSerializer
类将数据序列化为JSON格式。 如果您还不熟悉JSON,那么JSON是一个非常好的工具。
JavascriptSerializer
会将您的JSON放在一个字符串中,然后您可以将其放入隐藏的输入中并使用您的Javascript代码进行读取。 这样做的好处是不需要第二个HTTP请求,就像jQuery Ajax的情况一样。
你可以做的是,使用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
另一种可能的方法是在C#代码中在页面加载时编写javascript函数。 然后,它将在呈现时添加到页面中,并可由document.ready()上的jQuery执行; 或任何其他function/事件。
示例代码:
string FunctionStr = ""; this.ClientScript.RegisterClientScriptBlock(this.GetType(), "Some JS Function", FunctionStr);
Anand和Daniel的答案可能更适合您想要的方法,但如果您需要,这是第三种选择。
你可以这样做:
在后面的代码中将公共成员声明为C#类
public string mystring;
在Init或Load Event中启动它并在你的js函数上写下它
var exp = '<%=mystring %>';
它应该适用于字符串。 对于Dictionnary,您可以尝试使用Ajax
如果您在加载页面时提前获得了数据,则可以直接将JSON写入页面,然后使用该javascript对象执行您需要的任何操作。
我不知道你是使用MVC还是WebForms,但这个想法基本相同:
例如(使用JSON.NET进行序列化):
现在_someJsObject
是一个表示你开始使用的数据的javascript对象,你可以用它做任何你想做的事情,比如循环遍历数组等。
旁注 – 如果你的目标是IE7,你需要使用像json2.js这样的东西来获得JSON解析。