问题标签 [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.

0 投票
1 回答
536 浏览

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。

0 投票
8 回答
35045 浏览

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 脚本。

有人遇到过同样的问题吗??

0 投票
1 回答
10909 浏览

jquery - 更新到 Jquery 1.9.0 时 jquery.unobtrusive-ajax 插件损坏

可能重复:
jQuery 1.7 - 将 live() 变成 on()

//解决方案:我只是替换了四个匹配项,例如建议的已批准答案,并且不显眼的 ajax 插件已启动并再次使用 jquery 1.9.0

更新//观察底部标记的答案的注释,这是解决此问题的最佳方法。

//原来的帖子:我升级到 jQuery 1.9.0 但后来不显眼的 ajax 插件因为他们弃用了 live 方法而失败了。我试图像这样替换它,因为升级为我修复了另一个错误。但是,它不起作用。我只是像这样将 live 替换为 on:

0 投票
2 回答
995 浏览

ajax - 在 OnSuccess 中获取调用表单

我不喜欢这样,因为如果这个部分有多个表单,它们都将具有相同的类,我宁愿不提出一些时髦的方案,在服务器端生成一个 ID,然后将其传递给JS 回调。

使用 .ajax,我可以使用this获取提交请求的表单,然后从那里获取父级 .formContainer。有没有办法获得对使用 OnSuccess 提交表单的表单的引用?

0 投票
1 回答
1930 浏览

asp.net-mvc - 部分视图未在 IE 中更新

我有一个带有级联下拉列表的 Razor 视图。父列表启用 ajax 并使用 jquery.unobtrusive-ajax.js。子列表是部分视图:

部分视图仅包含子列表的下拉列表:

控制器方法 GetChildren 将列表数据加载到 ViewBag 项中并返回部分视图:

当在父列表中选择一个项目时,子列表应该加载相关项目。这在 Firefox 和 Chrome 中按预期工作。但在 IE9 中,子列表只是空白。如果我查看 Fiddler 中的 Ajax 调用,我会看到部分视图内容已正确返回。

如何让 IE 正确更新子列表?

编辑

当在父列表中选择一个项目时,Fiddler 会记录这一点:

0 投票
1 回答
3924 浏览

asp.net-mvc - 部分加载视图的回发带来空模型

我的应用程序有几个搜索框的页面。当用户单击相应的搜索按钮时,预计会加载结果网格。该网格几乎没有可编辑的控件,用户可以在其中修改并在需要时点击保存按钮来保存数据。

我们已经使用 AjaxForm 和局部视图实现了该功能。

  1. 包含搜索框和搜索按钮的搜索区域是使用 Ajax.BeginForm 创建的,在提交时从控制器调用回发搜索方法。SearchModel 被传递给这个方法。
  2. 创建部分视图以显示结果,并且步骤 1 中的 Ajax 表单从控制器回发方法成功加载它。SearchModel.Results 属性作为其模型传递给视图。
  3. 这个显示结果的部分视图有一个保存按钮(同样是一个 Ajax 表单),它调用控制器中的另一个方法,但在控制器中获取模型 null。

尝试了很多技巧,但都没有成功。任何工作示例在任何地方展示或建议使其工作?网络上有很多示例,其中解释了使用 AjaxForm 加载数据,但没有找到多个(或嵌套?)

提前致谢。

编辑 - 2月24日

这是我使用 Visual Studio 默认 MVC 模板创建的示例,它与上面解释的实际条件相似,并且在提交部分页面时存在相同的问题。

意见:

索引.cshtml

部分视图 - _SearchResult.cshtml

楷模:

搜索模型.cs

结果模型.cs

控制器:

家庭控制器.cs

所以,上面的样本将

  1. 在主页上显示一个搜索框 - Index.cshtml
  2. 当您单击提交时,它将加载一个部分视图,在搜索下方显示结果
  3. 当您编辑搜索结果并在结果表单上点击提交时,请在那里设置一个断点,您将看到返回的模型为空。

希望,这可以解释我的问题。

0 投票
2 回答
15128 浏览

jquery - ASP.NET MVC 4:无法修改 jQuery Unobtrusive Ajax

使用ASP.NET MVC 4NuGet管理包。

升级到jQuery 1.9.1via后,NuGet我开始收到JavaScript有关删除live().jQuery 1.9.x

我在 VS.NET 中按 F5 以调试模式运行,进入登录页面,得到以下信息:

错误 Microsoft JScript

找到这个 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。

如果有人以前经历过这种情况并有任何见解,我将不胜感激。先感谢您。

0 投票
1 回答
2058 浏览

jquery - ASP.Net MVC - 部分刷新后客户端验证中断?

我有一个包含搜索栏的页面,默认情况下它显示下面的项目列表。每个项目都包装在一个 ajaxform 中,以便用户可以更新数量。客户端验证在页面加载时工作得非常好,它需要一个数量。

一旦用户单击搜索,并且部分结果被刷新,我的整个验证都会中断,并且不再显示验证摘要。

我试图通过调用刷新部分后重新添加验证,$.validator.unobtrusive.parse($("#resultList")); 但它似乎没有做任何事情。

有什么解决办法吗?

主窗体

部分的

0 投票
1 回答
4151 浏览

ajax - ASP.NET MVC4 Ajax.ActionLink 替换整个页面

在我看来,我有:

在结果页面的标题中,我看到引用了这些脚本:

链接看起来像这样:

在控制器中:

在我的 web.config 中(在应用程序的根目录中):

我的问题是:每当我单击链接时,结果(当前时间)总是会替换整个页面 - 它不会插入到 some_div 中/之后/之前。谢谢

0 投票
1 回答
15715 浏览

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 的头部...

知道我做错了什么吗?我真的很感激这方面的帮助!