.ajax,成功选择中有什么?

时间:2013-03-05 00:03:54

标签: jquery ajax asp.net-mvc

我正在构建一个MVC,我正在尝试我的第一个ajax调用。它所做的就是将一个int发送到控制器Action Method,它将一些数据保存到DB,然后返回一个“成功保存”的视图。我知道动作方法有效,因为我有一个ActionLink通过Get发送id,一切都很好。现在我需要将它切换到Post,而ActionLinks不做Post。所以我正在尝试ajax。

这是我的ajax:

 $(document).ready(function () {
    $("#button-save").click(function () {
        var applicantId = $("#PersonModel_ApplicantID").val();

        $.ajax({
            url: '<%: Url.Action("SaveRecord") %>',
            data: { 'id': applicantId },
            type: "post"
        });
    });
});

我知道这一部分有效,但我需要有一个'成功'选项,因为现在没有显示'成功保存'页面。我看了一些不同的教程,说实话,成功的事情让我感到困惑。操作方法全部设置为提供所需的消息:

        }
        else
        {
            return View("Error_RecordExists");
        }

        return View(model);

所以我想知道是否有办法告诉ajax(一旦它发送了ID,就会离开,或者其他什么。谢谢。

2 个答案:

答案 0 :(得分:1)

成功部分是在Ajax成功完成时调用的函数。它将通过jQuery作为参数传递一些内容,包括响应。

该功能的定义是......

Function( PlainObject data, String textStatus, jqXHR jqXHR )

所以你会这样做......

$.ajax({
    ...
    success: function(data, textStatus, jqXHR) {
        $("#SomeResultDiv").html(data); //Put the response in the div with Id "SomeResultDiv"
    }
});

data对象将响应包含在字符串中。

textStatus非常明显。请求的Http状态的文本描述。

jqXHR是jQuery XmlHttpRequest对象 - 它是每个浏览器中使用的XmlHttpRequests的包装器。它提供标题,http响应代码等信息...有关详细信息,请参阅文档。

如果你不想要参数,你可以省略列表末尾的参数

    success: function(data) {...}

完全有效。

请注意,您可以使用$.json()代替$.ajax()来调用返回Json对象的Web方法。当您的服务器不知道格式化时,这些非常方便。例如,您有一台服务器,它只是将统计信息报告为JSON对象。您的Javascript可以加载该数据,然后根据需要创建div / graphs / etc.为您提供干净的代码服务器端,关注点(数据与格式)以及许多其他优点。

答案 1 :(得分:0)

以下是使用webmethod

的简单邮件发送代码示例
[System.Web.Services.WebMethod]
public static int SendMail(string Name, string FromEmail, string Body)
{
    StringBuilder sbBody = new StringBuilder();
    string ToEmail = "goldramesh.cool@gmail.com";
    sbBody.Append(Name + ",");
    sbBody.Append("<br/>");
    sbBody.Append("<br/>");
    sbBody.Append(Body);
    Contact contact = new Contact();
    //string script = "alert('Message sent successfully');window.location ='Contact.aspx';";
    System.Net.Mail.MailMessage eMail = new System.Net.Mail.MailMessage();
    eMail.From = new System.Net.Mail.MailAddress(FromEmail);
    eMail.To.Add(ToEmail);
    eMail.Subject = "Contact from  " + FromEmail;
    eMail.IsBodyHtml = true;
    eMail.Body = Body;
    SmtpClient SMTP = new SmtpClient();
    SMTP.Send(eMail);
    eMail.Dispose();
    contact.Clear();
    return 1;
}

和Ajax编码是

var pageUrl = 'Contact.aspx';
        $.ajax({
            url: pageUrl + '/SendMail',
            type: "POST",
            data: '{Name: "' + Name + '",FromEmail: "' + FromEmail + '",Body: "' + Body + '"}',
            dataType: "json",
            contentType: "application/json",
            **success: function (data) {// Success 
                if (data.d == 1) {//Check success code** 
                    $("input[type=button]").val("Send Mail");
                    alert("Mail successfully sent");                     
                }
            }
        });  

我的网络方法是返回1.所以我检查了data.d == 1

你可以看到我的样本方式......