如何将数据从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个问题:

  1. 如何在加载页面时将我的字符串放入函数中?
  2. 字符串是正确的类型还是我可以传递一些其他字典对象?
  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解析。