Всегда делайте ошибку события $ .ajax - PullRequest
2 голосов
/ 18 июня 2011

У меня есть функция для отправки электронной почты.Эта функция работает нормально, но она всегда вызывает функцию ошибки, никакой ошибки не возникало (я получаю электронное письмо).

Следуйте моему Javascript:

//Send mail
$("div.contato-pedidooracao form").submit(function () {

    var dataString = $(this).serialize();
    $.ajax({
        type: "POST",
        url: "Contato/SendMail",
        data: dataString,
        dataType : "json",
        success: function (data) { alert("OK"); },
        error: function (data) { alert("Error"); }

    });
});

Контроллер

[HttpPost]
public ActionResult SendMail(string name, string phone, string cel, string email, string message)
{
    try
    {
        using (var mail = new MailMessage())
        {

            mail.To.Add("--mailhere--");

            mail.From = new MailAddress("\"" + name + "\" <" + email + ">" );
            mail.Subject = "Pedido de Oração - " + name;
            mail.Body = message;
            mail.IsBodyHtml = false;

            new SmtpClient().Send(mail);
        }
        return Json(new{Sucess = true, Message = "Email enviado com sucess!" } );

    }
    catch (Exception ex)
    {
        return Json(new{Sucess = false, Message = ex.Message } );
    }

}

Ответы [ 2 ]

2 голосов
/ 18 июня 2011

Полагаю, вам нужно добавить event.preventDefault, чтобы не допустить всплывающего события отправки и отправки формы на сервер.

$("div.contato-pedidooracao form").submit(function (event) {
   event.preventDefault();
   ..... 
   .....
 });
1 голос
/ 18 июня 2011

Вы пытались просто добавить return false в функцию отправки:

$("div.contato-pedidooracao form").submit(function () {

  var dataString = $(this).serialize();
    $.ajax({
       type: "POST",
       url: "Contato/SendMail",
       data: dataString,
       dataType : "json",
       success: function (data) { alert("OK"); },
       error: function (data) { alert("Error"); }
   });
return false;  //right here
});
...