我正在构建一个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,就会离开,或者其他什么。谢谢。
答案 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
你可以看到我的样本方式......