Jquery 如何使用JsonResult重新加载局部视图?
在我的Jquery 如何使用JsonResult重新加载局部视图?,jquery,ajax,asp.net-mvc,json,Jquery,Ajax,Asp.net Mvc,Json,在我的视图中有一个带有微调器的功能区,用户可以在其中选择一个int类型,我使用该类型作为参数来获取存储库中的一些数据 所以我提出了一个ajax请求: var url = "/ControllerExample/GetJsonUrl?param=" + s.GetItemValueByName("countParam") ; jQuery.ajax({ type: "GET", url: url,
视图中
有一个带有微调器的功能区,用户可以在其中选择一个int
类型,我使用该类型作为参数来获取存储库中的一些数据
所以我提出了一个ajax请求:
var url = "/ControllerExample/GetJsonUrl?param=" + s.GetItemValueByName("countParam") ;
jQuery.ajax({
type: "GET",
url: url,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
window.location.href = data;
},
failure: function (errMsg) {
alert(errMsg);
}
});
在我的控制器中我有一个ActionResult
,它返回一个JsonResult
,带有指向“success”函数的特定url:
public ActionResult GetJsonUrl(string param)
{
var urlHelper = new UrlHelper(ControllerContext.HttpContext.Request.RequestContext);
string url = urlHelper.Action("OtherAction", "ControllerExample", new {id = param});
return new JsonResult {Data = url, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
}
因此,如果结果是成功,则请求返回到ajax成功函数,然后转到示例控制器,以执行其他操作
我只想用一个动作就能做到,有可能吗?刷新
JsonResult
或其他内容中的页面。您可以使用模型将该视图呈现为字符串,并使用JSON结果传递。然后替换整个DOM elemet
这里呢
success: function (data) {
$("#targetDOMElementId").val(data);
},
其中,targetDOMElementId可以是一个容器
DIV
供您查看View
您可以使用您的模型将该视图渲染为字符串,并使用JSON结果传递。谢谢,现在我明白了这一点。我想它会起作用的。顺便说一句,我正在测试ajax请求,由于一个错误,我将类型设置为“POST”,它也起了作用。你知道为什么吗?@ggui我很高兴它对你有用@ggui在某些情况下,使用纯HTTP中的json生成的复杂类型获取数据不允许使用正文中的请求数据(json)执行GET请求但是它允许使用URI中的请求数据(比如domain.com?number=2&factor=4)来获取请求,但是它不是json数据,因此您也可以使用POST来获取具有json:)的复杂请求类型的数据
success: function (data) {
$("#targetDOMElementId").val(data);
},