#jquery #asp.net #ajax
#jquery #asp.net #ajax
Вопрос:
У меня есть приложение, созданное с использованием ASP.NET Веб-формы и jQuery. На моей странице .aspx у меня есть ссылка, которая при нажатии выдает AJAX-запрос jQuery к веб-методу в codebehind страницы, который, в свою очередь, считывает данные из базы данных и возвращает их в виде объектов JSON.
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'Query.aspx/GetValues',
dataType: "json",
success: function (result) {
for (var i = 0; i < result.d.length; i ) {
var element = result.d[i];
}
}
});
Все в порядке до сих пор! Проблемы возникают, когда я хочу записать эти объекты JSON на страницу, потому что для каждого из них я хотел бы сгенерировать такой HTML:
<li><a id="..." href="javascript:doPostback(...)">...</a></li>
На самом деле, мне нужно сгенерировать что-то вроде LinkButton на стороне клиента, потому что мне нужно выполнить некоторые действия на стороне сервера при обратной передаче. Я не знаю, как выразить это с помощью jQuery.
Надеюсь, мой вопрос понятен.
Большое вам спасибо!
Ответ №1:
Значит, вы возвращаете объекты JSON в порядке? Какую информацию вы возвращаете внутри этих объектов JSON? Это может быть огромным предположением, в зависимости от того, какая информация возвращается в ваших объектах JSON, но почему бы не попробовать что-то вроде этого:
...
success: function (result) {
for (var i = 0; i < result.d.length; i ) {
var element = result.d[i];
var link = $('<a />');
link.attr('href', 'javascript:doPostback(...)');
link.attr('id', 'some-id');
link.html('link-text-here');
var list_item = $('<li />');
list_item.append(link);
$('your-ordered-list-selector').append(list_item);
}
}
...
Надеюсь, это поможет! 🙂
Комментарии:
1. Это нормально, но мне нужен код между этими круглыми скобками: link.attr(‘href’, ‘javascript:doPostBack(…)’); 😀 Проблема в том, что я не знаю, как выполнить обратную отправку (с аргументом).
2. Почти так же, как вы бы сделали это в обычном HTML. Итак, если имя моей функции называется «awesomeFunction» и принимает 2 аргумента — обе строки — вы могли бы сделать это:
link.attr('href', 'javascript:awesomeFunction("first-string", "second-string")');
3. В качестве альтернативы можно применить функцию onclick:
link.attr('href', 'return false').click(function(){awesomeFunction("first-string", "second-string")});
Ответ №2:
var element = '';
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'Query.aspx/GetValues',
dataType: "json",
success: function (result) {
for (var i = 0; i < result.d.length; i ) {
element = '<a href="javascript:doPostback(...)">' result.d[i] '</a>';
}
$('#result-container').html(element);
}
});
Этот код создаст ссылки и загрузит html в контейнер результатов.
Комментарии:
1. Это нормально, но мне нужен код между этими круглыми скобками: link.attr(‘href’, ‘javascript:doPostBack(…)’); 😀 Проблема в том, что я не знаю, как выполнить обратную отправку (с аргументом).
2. Здравствуйте, создайте новую функцию doPostBack, которая принимает аргумент из результата редактирования JSON: например, функция doPostBack(str){ alert(‘вы выбрали’ str); }
3. Вы не можете вызывать функции ASP с помощью JS.
4. Мне не нужно вызывать ASP.NET функции, мне нужно выдать ASP.NET Обратная отправка!
5. Затем в функции обратной передачи JS используйте jquery $.post для отправки в ASP.NET файл, использующий параметры функции в качестве параметров Post-запроса!