У меня есть функция, которую я хотел бы запускать при загрузке страницы, поэтому либо в 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>");
}
Теперь это работает с простыми тестовыми данными, но мне нужно сейчас разобраться, как расширить функциональность.
У меня есть список терминов в моем приложении С#, а также соответствующий URL-адрес. Я собираюсь передать эти данные в виде строки и раскалываться, однако у моего знания javascript много дыр.
Поэтому, я полагаю, у меня есть 3 вопроса:
Заранее спасибо.
Вы можете сделать так:
Объявите публичный член в свой класс С# по коду
public string mystring;
Инициировать его в Init или Load Event И написать, что на вашей js-функции
var exp = '<%=mystring %>';
Он должен работать для строки. Для Dictionnary вы можете попытаться сделать Ajax
Другой возможный способ сделать это - написать функцию javascript при загрузке страницы в код С#. Затем он будет добавлен на страницу при ее рендеринге и может быть выполнен с помощью jQuery на document.ready(); или любой другой функции/события.
Пример кода:
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);
Ответы от Ананда и Дэниела могут лучше соответствовать вашему желаемому подходу, но это третий вариант, если вы этого хотите.
Вы можете использовать JQuery Ajax для получения данных на стороне сервера.
Но это потребует от вас установки службы, которая будет выставлена. Вы можете сделать это в кратчайшие сроки без настройки службы.
Но это потребует грязной логики (ее короткое сокращение :))
Вы можете создать свойство на своей странице, которое предоставляет данные JSON Data как строку. Вы можете прочитать данные JSON в своем javascript, следуя
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
@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-синтаксический анализ.