相关疑难解决方法(0)

在将jQuery更新到1.9.0后,不显眼的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 asp.net-mvc-3 unobtrusive-ajax

37
推荐指数
4
解决办法
3万
查看次数

Ajax.BeginForm不会触发AJAX脚本,而是回退回发

我将使用解决方案更新此问题,我想包括我的问题和解决方案,因为我无法在Stackoverflow上找到它.如果您想加入解决方案,请随意.

我有一个使用Visual Studio 2013创建的新创建的"Empty"MVC5项目.如果可能的话,我需要一个来自并且需要AJAX行为.在MVC3中使用Ajax.BeginForm始终是直接的,所以我认为它也将在MVC5中.

但是,当我单击提交按钮时,没有调用我在AjaxOptions中的OnBegin,OnFailure或OnSuccess中指定的javascript函数.而是将一个无Ajax的帖子发送到服务器,通过检查返回false的Request.IsAjaxRequest已证明这是真的.

我得出结论,由于某种原因,ajax根本就没有被使用.我检查了很多东西,比如web.config,我的布局脚本等.

我的布局包括以下脚本:

<script src="~/Scripts/jquery-1.5.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的web.config包括:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我的看法:

@model ContactEnquiryViewModel

@{
AjaxOptions ContactOptions = new AjaxOptions()
{
    OnBegin = "OnConactFormBegin()",    
    OnSuccess = "OnContactFormSuccess()",
    OnFailure = "OnContactFormFailure()"
    };
}

<div id="EnquiryFormContainer">

@using (Ajax.BeginForm("Contact", "Home", new { formName = "EnquiryForm" }, ContactOptions))
    {
    @Html.HiddenFor(m => m.Subject)

    <div class="field">
        @Html.LabelFor(m => m.FirstName)
        @Html.TextBoxFor(m => m.FirstName)
        <div class="validation">
            @Html.ValidationMessageFor(m => m.FirstName)
        </div> …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc-5

19
推荐指数
3
解决办法
5万
查看次数