2011-06-17 6 views
2

私は電子メールを送信する機能があります。 この関数は正常に動作しますが、エラー関数は常にトリガーされ、エラーは発生しませんでした(電子メールを受信して​​います)。

私のJavascriptをフォロー:私はあなたがバブルアップと本当にサーバーへのフォームの送信から提出イベントを停止するevent.preventDefaultを追加する必要があると考えてい

[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

//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"); } 

    }); 
}); 

コントローラ。

$("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が良いです - AJAX偽 – CResults

+0

を返す使用している場合、フォームがまだ提出します呼んで真のエラーが発生した場合@ CResults:それを得ました。わかる。それは物事の順序と関係しています。それを指摘してくれてありがとう。 –

関連する問題