我正在对名为Estatement的ActionResult方法进行Ajax调用。 这就是我想要发生的事情
如果checkUser = false,则应该重定向到视图
如果checkuser不是false,我想返回Done为成功并拥有我的ajax 代码做了一些事情。
现在我无法重定向到语句视图,我得到的是来自错误消息的警报(尝试处理时出错)
您认为此代码有什么问题?
<div class="eStmnt">
<div class="eStmntAd">
<h3>Go Green!</h3>
</div>
<p class="eStmntAffirm hide">Testing Testing</p>
</div>
<script type="text/javascript">
$(".eStmnt").click(function() {
$.ajax({
type: "POST",
url: '@Url.Action("Estatement","MyController")',
dataType: "json",
success:function(result) {
if (result == "Done") {
$(".eStmntAffirm").removeClass("hide").addClass("show");
}
},
error: function() {
alert('An error occured while trying to process this');
}
});
});
</script>
public ActionResult Estatement()
{
bool checkUser = false;
string result = string.Empty;
if (checkUser == false)
{
return RedirectToAction("Statement","MyProducts");
}
result = "Done";
return Json(result);
}
答案 0 :(得分:1)
由于Ajax期待JSON,您的方法将无效。但是你可以试试这个
Ajax成功回调函数
success:function(data) {
//Do something when result is done
if (data.status == "error" && data.redirectionUrl != "") {
window.location.replace(data.redirectionUrl)
}
//Do something when result is done
if (data.status == "success" && data.result == "Done") {
$(".eStmntAffirm").removeClass("hide").addClass("show");
}
},
控制器的
public ActionResult Estatement()
{
bool checkUser = false;
string result = string.Empty;
if (checkUser == false)
{
UrlHelper urlHelper = new UrlHelper(this.ControllerContext.RequestContext);
return Json(new {
status = "success"
redirectionUrl = urlHelper.Action("Statement","MyProducts")
});
}
return Json(new {
status = "success"
result = "Done"
});
}
答案 1 :(得分:0)
您的控制器需要返回JsonResult而不是ActionResult
Ex:http://geekswithblogs.net/michelotti/archive/2008/06/28/mvc-json---jsonresult-and-jquery.aspx
答案 2 :(得分:0)
你正在遵循一个错误的方法......处理这个需要你需要遵循这个过程......
首先将您的ajax调用类型更改为“获取”,或者如果是post,则更改您的操作方法,如下所示:
1.将Ajax类型更改为Post。
[HttpPost]
public ActionResult Estatement()
{
bool checkUser = false;
string result = string.Empty;
result = "Done";
if (checkUser == false)
{
result ="False";
}
return Json(result,JsonAllowBehaviour.AllowGet);
}
然后在你的ajax调用的成功方法中写下这个:
<script type="text/javascript">
$(".eStmnt").click(function() {
$.ajax({
type: "POST",
url: '@Url.Action("Estatement","MyController")',
dataType: "json",
success:function(result) {
if (result == "Done") {
$(".eStmntAffirm").removeClass("hide").addClass("show");
}
// Condtion for redirect...
else
{
window.location='@Url.Action("Statement","MyProducts")';
}
},
error: function() {
alert('An error occured while trying to process this');
}
});
});