Классический ASP — используйте Ajax для отправки формы запроса без обновления

Я просмотрел Google и т. Д., Но не могу найти ничего для того, что мне нужно, поэтому прошу у моих товарищей по SE небольшую помощь.

У меня есть форма, которая содержится на моей странице и едина для всего сайта. Я хотел бы отправить форму запроса без обновления страницы, что является обычным путем с Classic ASP.

У меня есть отдельная страница ASP, содержащая мой почтовый скрипт, которая отлично работает и отправляет электронное письмо, однако я хотел бы использовать Ajax для вызова этой страницы, отправки электронного письма и последующего информирования пользователя о том, что оно было отправлено.

Любая помощь будет оценена по достоинству.


person Nick Green    schedule 22.12.2012    source источник


Ответы (1)


Классический ASP, ASP.NET, PHP или любой другой динамический язык, все то же самое, что вы действительно делаете, это FORM POST, и это HTML, а не ASP.

Предполагая, что у вас есть форма вроде

<form id="frm-submit" action="/SendEmail.asp" action="POST">

   ...

   <input type="submit" value="Submit form" />
</form>

добавить немного jQuery на страницу как

$(function() {

   $("#frm-send").submit(function() {
      var data = $(this).serialize(),
          action = $(this).attr("action"),
          method = $(this).attr("method");

      $(".loading").show(); // show loading div
      $.ajax({
         url: action,
         type: method,
         data: data,
         success: function(data) {
             // all went well...
         },
         error: function(err) {
             // there was something not right...
         },
         complete: function() {
            $(".loading").hide(); // hide the loading
         }
      });

      return false; // don't let the form be submitted
   });

});

и вы готовы идти.


на вашей странице sendMail.asp все, что вы отправляете на Response.Write, будет находиться в переменной data метода success, поэтому после отправки электронного письма у вас будет:

Response.Write("done")
Responde.Flush()
Response.End()

в части javascript вы можете справиться с этим следующим образом:

success(data) {
    if(data === "done")
    {
       // Super duper! let's show the user a Thank you for submit page
       document.location = "/ThankYou.asp";
    }
}
person balexandre    schedule 22.12.2012
comment
Ваш JQuery идеален, спасибо. Однако часть успеха перенаправляет, что я понимаю, почему вы это сделали, но есть ли способ заменить контактную форму другим сообщением? Например, спасибо за ваш запрос, мы скоро свяжемся с вами? - person Nick Green; 22.12.2012
comment
Я понял это. Я поместил это в jQuery: $('#form-contact-sidebar').hide(); $('#отправить-результат').show(); - person Nick Green; 22.12.2012