ASP.NET MVC Пост с ссылкой - PullRequest
1 голос
/ 27 июня 2011

У меня есть пейджер со ссылками, я хочу использовать post вместо перенаправления по умолчанию, потому что мне нужно передать некоторые другие значения из формы.Я установил jquery post onclick следующим образом:

<script type="text/javascript">
    $(document).ready(function () {
    $("#mytable tfoot a").click(function() {
                  $.post($(this).attr("href"), $("form").serialize());
                  //return false; if i set that the page does not getting updated
    });
 });

Но это не полностью отвергает поведение href, потому что сначала происходит пост-действие, и это хорошо, но затем форма снова отправляется.

Мой javascript не полностью перекрывает поведение href.

Может быть, у кого-то есть идеи на этот счет?

Ответы [ 4 ]

1 голос
/ 27 июня 2011

Причина, по которой вы чувствуете, что это не работает, заключается в том, что вы не делаете то, что, по вашему мнению, делаете.

Метод $.post не публикует форму, он создает AJAXпозвонить в фоновом режиме.Вы можете указать метод обратного вызова в вызове, который будет вызываться при получении ответа, но поскольку у вас нет метода обратного вызова, вы просто игнорируете ответ, поэтому ничего не происходит.

Поскольку вы хотите опубликовать формуВы не должны использовать метод $.post, вместо этого вы должны использовать метод submit для отправки формы:

$(document).ready(function () {
  $("#mytable tfoot a").click(function(e) {
    e.preventDefault(); // keeps the link from being activated
    var form = $("form");
    form.attr('action', $(this).attr("href"));
    form.attr('method', 'post');
    form.submit();
  });
});
1 голос
/ 27 июня 2011

Правильный путь AJAXify для ссылки следующий:

$(function() {
    $('#mytable tfoot a').click(function() {
        $.post(this.href, $('form').serialize(), function(result) {
            alert('success');
        });
        return false;
    });
});

Несколько вещей для проверки:

  • Вы подключаете обработчик .click внутри $(document).ready, как показано в моем фрагменте.
  • Вы возвращаете false из обработчика .click, чтобы отменить действие по умолчанию.
  • Href якоря указывает на существующее действие контроллера.
  • Не возникает исключение при вызове действия.
  • Анализ с помощью FireBug, отправляется ли запрос AJAX и что отвечает сервер. Это позволит вам увидеть любые потенциальные сообщения об ошибках, которые могут быть выданы.
0 голосов
/ 27 июня 2011

Если вы хотите опубликовать другой URL-адрес, и чтобы страница переходила по этому URL-адресу как часть публикации, то единственное решение состоит в том, чтобы поместить ваши данные в элементы ввода внутри формы.опубликовать в.

Вы можете создавать посты ajax, как и вы, но это не будет перенаправлять пользователя на эту страницу с данными поста.Вы, вероятно, делаете это намного сложнее, чем должно быть.

0 голосов
/ 27 июня 2011

return false; на самом деле жизненно важно для предотвращения перехода по ссылке после вызова $.post().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...