2011-06-17 43 views
2

我有發送電子郵件的功能。 此功能正常工作,但它總是觸發錯誤功能,沒有發生任何錯誤(我收到電子郵件)。

按照我的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

我相信你需要冒泡,真正提交的形式向服務器添加event.preventDefault停止提交事件。

$("div.contato-pedidooracao form").submit(function (event) { 
    event.preventDefault(); 
    ..... 
    ..... 
}); 
1

你嘗試只需添加返回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 
}); 
+1

的preventDefault更好 - 如果在阿賈克斯真正的錯誤調用的形式將如果使用返回false – CResults

+0

還提交@ CResults:明白了。理解。它與事物的順序有關。感謝您指出了這一點。 –