$ .ajax не работает в Firefox 4.0.1 и IE9 - PullRequest
0 голосов
/ 19 июня 2011

Обратные вызовы $ .ajax не работают в Firefox 4.0.1 и IE9

Я использую эту функцию jQuery для отправки электронной почты контакту. Ниже приведен код.

Контроллер работает нормально, что указывает на то, что JavaScript работает! По-видимому, не вызываются только события $ .ajax.

Javascript

$(window).ready(function () {
    //Send mail
    $("div.contato-pedidooracao form").submit(function () {
        var dataString = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "Contato/SendMail",
            data: dataString,
            dataType: "json",
            beforeSend: function () { //Dont Work in IE9 and Firefox!!
                $(".sending").show();
                $(".status").show();
                $(".status > span").show();
                $(".submit > input").attr('disabled', true);
            },
            complete: function () { //Dont Work in IE9 and Firefox!!
                $(".sending").hide();
                $(".message").show();
                $(".status > span").hide();
                $(".submit > input").removeAttr('disabled');
            },
            success: function (data) { //Dont Work in IE9 and Firefox!!
                $(".message").empty();
                $(".message").append("<p>Mensagem enviada com sucesso!</p>");
            },
            error: function () { //Dont Work in IE9 and Firefox!!
                $(".message").empty();
                $(".message").append("<p>Ocorreu um erro ao tentar enviar a mensagem.</p>");
            }
        });
    });
});

Контроллер

[HttpPost]
public JsonResult SendMail(string name, string phone, string cel, string email, string message)
{
using (var mail = new MailMessage())
{
    mail.To.Add("--email--");

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

}

HTML

<div class="content contato-pedidooracao">
    @using (Html.BeginForm())
    {
        <p>Conte-nos seu pedido</p>
        <div class="inline">
            @Html.Label("name", "Nome:")
            @Html.TextBox("name", "")
        </div>
        <div class="inline">
            @Html.Label("phone", "Telefone:")
            @Html.TextBox("phone", "", new { @class = "phone" })
            @Html.TextBox("cel", "", new { @class = "phone" })
        </div>
        <div class="inline">
            @Html.Label("email", "e-mail:")
            @Html.TextBox("email", "", new { @class = "email" })
        </div>
        <div class="inline">
            @Html.Label("message", "Mensagem:")
            @Html.TextArea("message", "")
        </div>

        <div class="status">
            <span>Enviando mensagem:</span><img class="sending" src="@Href("~/Images/ajax-loader2.gif")" alt="Enviando..." />
            <div class="message"></div>
        </div>

        <div class="submit">
            <input type="submit" value="Enviar" title="Enviar" />
        </div>
    }

</div>

1 Ответ

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

Попробуйте добавить функцию protectDefault в функцию отправки:

$("div.contato-pedidooracao form").submit(function (e) {
    e.preventDefault();
    //rest of your code
...