问题标签 [unobtrusive-ajax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ajax - 连接 doc.ready 期间不存在的 Ajax.BeginForm?
我有一个通过 Ajax.ActionLink 加载 Partial 的 MVC 页面,它可以工作,然后加载的 Partial 包含一个具有 Ajax.BeginForm 的表单。此表单没有连接到不显眼的 ajax,而是执行页面刷新(我在浏览器的网络日志中验证了这一点,当我单击提交时显示发起者是浏览器而不是 jquery)。
我认为问题在于,由于加载页面时表单不存在(但后来通过 Ajax.ActionLink 添加),所以不显眼的 ajax 没有在新添加的表单上看到 data-ajax 属性和连接必要的事件。我假设这只发生在 document.ready 中,并且当时不存在 ajax 表单。
有什么我可以说的“嘿,Unobtrusive Ajax,请再次查看我的页面,因为我有一些用 data-ajax 标记的新元素并将它们连接起来”?
谢谢。
查看不显眼的 ajax 源代码,它有:
生成的表单标签如下所示:
据我所知,.live 事件上的选择器应该在新表单加载到页面上时拾取它。然而,该表单位于引导模式内,所以我不知道这是否会阻止事件以某种方式冒泡。
我什至可以在 Chrome 控制台中运行它:
它成功返回表单元素,但是当我单击提交时,它仍然会刷新整个页面。我希望它至少不会做任何事情,因为我将它连接到 preventDefault。
jquery - 将 jQuery 更新到 1.9.0 后,Unobtrusive Ajax 停止工作
我刚刚将 jQuery 和 jQuery UI 更新为:jquery-1.9.0.min.js 和 jquery-ui-1.9.2.min.js
而且...我所有不显眼的 Ajax 调用(Ajax.ActionLink、Ajax.BeginForm)都停止了正常工作——它们在新页面中打开结果,而不是更新现有的 div。
当我的页面加载时,我在 Firebug 中收到了这个 javascript 错误:
代码当然没有改变,只是使用 Nuget 更新了 jQuery 脚本。
有人遇到过同样的问题吗??
jquery - 更新到 Jquery 1.9.0 时 jquery.unobtrusive-ajax 插件损坏
//解决方案:我只是替换了四个匹配项,例如建议的已批准答案,并且不显眼的 ajax 插件已启动并再次使用 jquery 1.9.0
更新//观察底部标记的答案的注释,这是解决此问题的最佳方法。
//原来的帖子:我升级到 jQuery 1.9.0 但后来不显眼的 ajax 插件因为他们弃用了 live 方法而失败了。我试图像这样替换它,因为升级为我修复了另一个错误。但是,它不起作用。我只是像这样将 live 替换为 on:
ajax - 在 OnSuccess 中获取调用表单
我不喜欢这样,因为如果这个部分有多个表单,它们都将具有相同的类,我宁愿不提出一些时髦的方案,在服务器端生成一个 ID,然后将其传递给JS 回调。
使用 .ajax,我可以使用this
获取提交请求的表单,然后从那里获取父级 .formContainer。有没有办法获得对使用 OnSuccess 提交表单的表单的引用?
asp.net-mvc - 部分视图未在 IE 中更新
我有一个带有级联下拉列表的 Razor 视图。父列表启用 ajax 并使用 jquery.unobtrusive-ajax.js。子列表是部分视图:
部分视图仅包含子列表的下拉列表:
控制器方法 GetChildren 将列表数据加载到 ViewBag 项中并返回部分视图:
当在父列表中选择一个项目时,子列表应该加载相关项目。这在 Firefox 和 Chrome 中按预期工作。但在 IE9 中,子列表只是空白。如果我查看 Fiddler 中的 Ajax 调用,我会看到部分视图内容已正确返回。
如何让 IE 正确更新子列表?
编辑
当在父列表中选择一个项目时,Fiddler 会记录这一点:
asp.net-mvc - 部分加载视图的回发带来空模型
我的应用程序有几个搜索框的页面。当用户单击相应的搜索按钮时,预计会加载结果网格。该网格几乎没有可编辑的控件,用户可以在其中修改并在需要时点击保存按钮来保存数据。
我们已经使用 AjaxForm 和局部视图实现了该功能。
- 包含搜索框和搜索按钮的搜索区域是使用 Ajax.BeginForm 创建的,在提交时从控制器调用回发搜索方法。SearchModel 被传递给这个方法。
- 创建部分视图以显示结果,并且步骤 1 中的 Ajax 表单从控制器回发方法成功加载它。SearchModel.Results 属性作为其模型传递给视图。
- 这个显示结果的部分视图有一个保存按钮(同样是一个 Ajax 表单),它调用控制器中的另一个方法,但在控制器中获取模型 null。
尝试了很多技巧,但都没有成功。任何工作示例在任何地方展示或建议使其工作?网络上有很多示例,其中解释了使用 AjaxForm 加载数据,但没有找到多个(或嵌套?)
提前致谢。
编辑 - 2月24日
这是我使用 Visual Studio 默认 MVC 模板创建的示例,它与上面解释的实际条件相似,并且在提交部分页面时存在相同的问题。
意见:
索引.cshtml
部分视图 - _SearchResult.cshtml
楷模:
搜索模型.cs
结果模型.cs
控制器:
家庭控制器.cs
所以,上面的样本将
- 在主页上显示一个搜索框 - Index.cshtml
- 当您单击提交时,它将加载一个部分视图,在搜索下方显示结果
- 当您编辑搜索结果并在结果表单上点击提交时,请在那里设置一个断点,您将看到返回的模型为空。
希望,这可以解释我的问题。
jquery - ASP.NET MVC 4:无法修改 jQuery Unobtrusive Ajax
使用ASP.NET MVC 4
和NuGet
管理包。
升级到jQuery 1.9.1
via后,NuGet
我开始收到JavaScript
有关删除live()
.jQuery 1.9.x
我在 VS.NET 中按 F5 以调试模式运行,进入登录页面,得到以下信息:
找到这个 StackOverflow 答案:https ://stackoverflow.com/a/14512797并对~\Scripts\jquery.unobtrusive-ajax.js
.
我的~\Scripts\jquery.unobtrusive-ajax.js
:
我还物理删除jquery.unobtrusive-ajax.min.js
并用于WebGrease 1.3.0
从我更新~\Scripts\jquery.unobtrusive-ajax.js
的 .
但是,由于某种原因,我不使用该.live()
功能的更改并没有坚持。我尝试停止 VS.NET 在其下运行 MVC 应用程序的 IIS Express 8.0 网站 (localhost:63798)。
还尝试在按 F5 再次以调试模式运行之前执行 Build->Clean Solution、Build->Rebuild Solution。
如果有人以前经历过这种情况并有任何见解,我将不胜感激。先感谢您。
jquery - ASP.Net MVC - 部分刷新后客户端验证中断?
我有一个包含搜索栏的页面,默认情况下它显示下面的项目列表。每个项目都包装在一个 ajaxform 中,以便用户可以更新数量。客户端验证在页面加载时工作得非常好,它需要一个数量。
一旦用户单击搜索,并且部分结果被刷新,我的整个验证都会中断,并且不再显示验证摘要。
我试图通过调用刷新部分后重新添加验证,$.validator.unobtrusive.parse($("#resultList"));
但它似乎没有做任何事情。
有什么解决办法吗?
主窗体
部分的
ajax - ASP.NET MVC4 Ajax.ActionLink 替换整个页面
在我看来,我有:
在结果页面的标题中,我看到引用了这些脚本:
链接看起来像这样:
在控制器中:
在我的 web.config 中(在应用程序的根目录中):
我的问题是:每当我单击链接时,结果(当前时间)总是会替换整个页面 - 它不会插入到 some_div 中/之后/之前。谢谢
asp.net-mvc-4 - 用于局部视图的不显眼的 Ajax 表单
我在使用不显眼的 ajax 从联系我们表单中发布数据时遇到问题。
我的部分视图是这样的:
我的部分视图放置在另一个页面上,如下所示:
我的家庭控制器是这样的:
我期望发生的是,当我按下提交时,控制器将返回一些文本内容,这些文本内容将被放置在 id 为“结果”的 div 中。
实际发生的情况是,当我按下提交时,我被重定向到 /Home/_ContactUsPartial,文本内容是唯一显示的内容。
我不明白这里发生了什么......我试图在网上查看示例,却发现自己更深入地挖掘了这个洞。
我确实在我的 Web.config 中启用了不显眼的 javascript,并且我还引用了 jquery.unobtrusive-ajax.min.js。
在我的 Scripts 文件夹中,我有以下可能相关的内容:
- jquery.unobtrusive-ajax.min.js
- jquery.validate.unobtrusive.min.js
- 微软MvcAjax.js
在我的 _Layout.cshtml 标记中,我声明了以下内容:
在我的 Global.asax.cs Application_Start 我有这一行:
RegisterBundles 看起来像这样:
不确定捆绑包的作用以及它们如何工作,因为我似乎已将其配置为通过此 ScriptBundle 将它们引入...但随后我也将它们手动配置在 _Layout.cshtml 的头部...
知道我做错了什么吗?我真的很感激这方面的帮助!