基本上,我在配置文件视图中执行Ajax Post后尝试刷新视图。
$.ajax({
url: '/Profile/Index',
dataType: "html",
type: "POST",
data: JSON.stringify(10),
success: function(returl) {
alert('It worked');
window.location.href = returl.url;
},
error: function(jqXHR,responseText,textStatus) {
alert(jqXHR.responseText)
}
});
这是HttpPost行动:
[HttpPost]
public ActionResult Index(string number){
//Things to do
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Profile");
return Json(new { Url = redirectUrl });
}
发帖后我得到了这个网址:http://localhost:50738/undefined 我已经调试了Controller方法,它正确地得到/ Profile。我无法理解为什么这个问题会持续下去......谢谢!
答案 0 :(得分:3)
您告诉Ajax请求期望返回HTML而不是JSON,因此,返回将完全是字符串值,因此returl.url将是未定义的。改为将数据类型更改为json。
在http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings上找到此信息。查看datatype参数以获取更多信息。
$.ajax({
url: '/Profile/Index',
dataType: "json",
type: "POST",
data: JSON.stringify(10),
success: function (returl) {
alert('It worked');
window.location.href = returl.Url;
},
error: function (jqXHR, responseText, textStatus) {
alert(jqXHR.responseText);
}
});
答案 1 :(得分:2)
如果您只返回一个字符串,请按原样返回
控制器代码
return Json(redirectUrl);
并直接在响应中使用字符串
$.ajax({
url: '/Profile/Index',
dataType: "json",
type: "POST",
data: JSON.stringify(10),
success: function (returl) {
alert('It worked');
window.location.href = returl;
},
error: function (jqXHR, responseText, textStatus) {
alert(jqXHR.responseText);
}
});
答案 2 :(得分:1)
尝试使用location.href=returl.Url
代替location.href=returl.url
。如上面的答案所指出的那样,将预期类型固定为'json'。