这是我的AJAX电话:
$(document).ready(function () {
$("#btnSignup").click(function () {
$.ajax({
type: "POST",
dataType: 'json',
url: "/Newsletter/Signup",
data: $('#signupForm').serialize(),
success: function (response) {
if (response.Success) {
$('#signupMessage').show(0);
}
else {
showValidationErrors(response.Data);
}
}
});
return false;
});
这是我的控制器:
[HttpPost]
public JsonResult Signup(FormCollection values)
{
var newsletterSubscriber = new newsletterSubscriber();
TryUpdateModel(newsletterSubscriber);
try
{
newsletterSubscriber.newslettersubscriber_firstname = values["firstName"];
newsletterSubscriber.newslettersubscriber_lastname = values["lastName"];
newsletterSubscriber.newslettersubscriber_email = values["emailAddress"];
//Save Subscriber
wildlifeDB.AddTonewsletterSubscribers(newsletterSubscriber);
wildlifeDB.SaveChanges();
//return RedirectToAction("Index");
return Json(new { result = "success" });
}
catch
{
//Invalid - redisplay with errors
//return View("Index");
return Json(new { result = "failure" });
}
}
为什么我的AJAX调用的条件“if(response.Sucess)”永远不会满足。我可以看到数据正在进入数据库吗?
答案 0 :(得分:1)
您将返回一个如下所示的JSON对象:{ result: "success" }
,但在您的客户端代码中,您正在检查名为Success
的属性。这不起作用,因为返回的对象不包含名为Success
的属性。
您的代码应该检查if (response.result === 'success')
。这应该有用。
为了使检查更漂亮,我通常会返回一个看起来像{ success: true }
的对象。在这种情况下,代码可以写成if (response.success)
,这在眼睛上更容易。