if (response.Success) 条件永远不会满足
这是我的 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)”永远不会得到满足。我可以看到数据正在进入数据库?
Here is my AJAX call:
$(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;
});
Here is my controller:
[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" });
}
}
Why is it that my AJAX call's conditional "if (response.Sucess)" is never satisfied. I can see that the data is making it into the database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您返回的 JSON 对象如下所示:
{ result: "success" }
,但在客户端代码中您要检查名为Success
的属性。这不起作用,因为返回的对象不包含名为Success
的属性。您的代码应该检查
if (response.result === 'success')
。那应该有效。为了使检查更漂亮,我通常返回一个类似于
{ success: true }
的对象。在这种情况下,代码可以写成if (response.success)
,这样看起来就容易多了。You're returning a JSON object that looks like this:
{ result: "success" }
, but in your client code you're checking for a property calledSuccess
. This doesn't work because the object that's returned doesn't contain a property calledSuccess
.Your code should check for
if (response.result === 'success')
instead. That should work.To make the check prettier, I generally return an object that looks like
{ success: true }
. In this case, the code can be written asif (response.success)
, which is a lot easier on the eyes.