【急】使用ajax 提交到指定action,对应的 view不显示

htcfan 2015-09-26 05:12:25
MVC5中,在一个视图 A 的按钮实现 ajax 调用 Action B
ps:Action A、B 均在 MyController 中。

$.ajax(
{
type: "POST",
url: "/My/B",

success: function ()
{
alert("invoke action");
}
} );

Controller 端代码:
public class MyController : Controller
{
public ActionResult B()
{
return View();
}
}

现在的情况是,调试下正常进入Action B及View B,ajax 的回调也能执行但浏览器页面始终停留在A,并没有刷新到 View B
在浏览器输入My/B 是可以正常进入 View B。

真是百思不得其解,是 ajax 的用法有错吗?
我在MyController中,使用DI来 resolve 一个成员,并设置为了InRequestScope,不知跟这个有没有关系。
...全文
191 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
htcfan 2015-09-28
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
ajax 提交到 ashx 吧。 统一到更直接的框架,你的网站可以保持更好的维护空间。
我可能对ajax的执行方式有点误解,但单步调试的时候确实会发现进入了对应的action view,这也是我疑惑的地方。 简单的解决方法是,在success或complete中加入页面跳转的语句,但不足是对应的action执行了2次(第1次被ajax direct call,第2次在callback中被call),效率岂不是很低。
htcfan 2015-09-28
  • 打赏
  • 举报
回复
问题确实在这里。 ajax 只负责提交,不会自动刷新对应的view。 因为单步跟踪的时候,进了view,所以潜意识的认为会自动触发view。 谢谢指点。
引用 1 楼 starfd 的回复:
哥哥,你ajax请求,返回的东西怎么展示就是要你确认的,你的success函数连个参数都没有,加个data参数,alert出家就是b的html了,你可以用$().html来指定哪块html容器来显示你的b
  • 打赏
  • 举报
回复
引用 楼主 htcfan 的回复:
真是百思不得其解,是 ajax 的用法有错吗?
还是记住“ajax 用来访问 ashx”吧,这样虽然简单但比较明白无误。 你若要的是页面跳转,就跟ajax无关。
  • 打赏
  • 举报
回复
引用 2 楼 tongxuejie 的回复:
用ajax实现页面跳转?
是啊,在 ajax 连 V和C 的关系就纠结出来了,这就把传统的页面刷新、跟 ajax 混沌在一起出不来了。
  • 打赏
  • 举报
回复
ajax 提交到 ashx 吧。 统一到更直接的框架,你的网站可以保持更好的维护空间。
「已注销」 2015-09-26
  • 打赏
  • 举报
回复
用ajax实现页面跳转?
  • 打赏
  • 举报
回复
哥哥,你ajax请求,返回的东西怎么展示就是要你确认的,你的success函数连个参数都没有,加个data参数,alert出家就是b的html了,你可以用$().html来指定哪块html容器来显示你的b

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧