Как создать LinkButton с помощью jQuery

#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-запроса!