【发布时间】:2020-10-21 07:16:06
【问题描述】:
提交表单后,会显示 Json 对象而不是 alert。我需要的是一个显示成功消息或错误的警报框。但是在提交表单时,它只显示返回的 JSON 对象。这是我的 MVC 控制器操作:
[HttpPost]
public ActionResult Subscribe(Subscriber Sub)
{
KeyGenerator Validate = new KeyGenerator();
string Email = Sub.Username.Trim();
bool IsValid = Validate.ValidateEmail(Email);
ENT Ent = new ENT();
if (IsValid)
{
Subscriber SubEmail = Ent.Subscribers.Where(a => a.Username == Email).FirstOrDefault();
if (SubEmail != null)
{
return Json(new { success = true, responseText = "Already subscribed!" }, JsonRequestBehavior.AllowGet);
}
else
{
Ent.AddToSub(Email);
return Json(new { success = true, responseText = "Thank you." }, JsonRequestBehavior.AllowGet);
}
}
else
{
return Json(new { success = false, responseText = "Invalid request." }, JsonRequestBehavior.AllowGet);
}
}
这是我的 ajax 请求:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
$("#subscribe").submit(function(e) {
e.preventDefault();
var values = new FormData($(this));
$.ajax({
type: $(this).type,
url: $(this).action,
data: values,
processData: false,
contentType: false,
cache: false,
success: function (response) {
if (response.success) {
alert(response.responseText);
}
else {
alert(response.responseText);
}
},
error: function (response) {
alert(response.responseText);
}
});
});
如何显示警报而不是 JSON 对象? 我的 JSON 响应如下:
{"success":true,"responseText":"Thank you."}
另外,这是因为请求页面是 PHP 吗? 发出请求的页面位于 https://MyWebUrl.com(不是真正的 url) 这是在 PHP 并且 MVC 网站位于 https://MySubDomain.MyWebUrl.com(不是真实的 url) 是这个原因吗?
【问题讨论】:
-
也许尝试将响应转换为 json 对象
let json = JSON.parse(response);,然后查看它是否允许您获取属性alert(json.ResponseText);我知道您正在从控制器返回一个 json 对象,但它值得试试看。 -
我做了这个,但仍然没有工作。请检查我的编辑。
标签: c# jquery ajax forms model-view-controller