标签: unobtrusive-ajax

在将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万
查看次数

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

可能重复:
jQuery 1.7 - 将live()转换为on()

//解决方案:我只是简单地替换了四次出现,如建议的批准答案和不显眼的ajax插件已启动并再次使用jquery 1.9.0

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

//原帖:我升级到jQuery 1.9.0,但随后不引人注意的ajax插件因为他们弃用了live方法而失败了.我试图像这样替换它,因为升级修复了我的另一个错误.但是,它不起作用.我只是简单地用以下方式取代了:

$("a[data-ajax=true]").on("click", function (evt) {
        evt.preventDefault();
        asyncRequest(this, {
            url: this.href,
            type: "GET",
            data: []
        });
    });

    $("form[data-ajax=true] input[type=image]").on("click", function (evt) {
        var name = evt.target.name,
            $target = $(evt.target),
            form = $target.parents("form")[0],
            offset = $target.offset();

        $(form).data(data_click, [
            { name: name + ".x", value: Math.round(evt.pageX - offset.left) },
            { name: name + ".y", value: Math.round(evt.pageY - offset.top) }
        ]);

        setTimeout(function () {
            $(form).removeData(data_click);
        }, 0);
    });

    $("form[data-ajax=true] :submit").on("click", function (evt) {
        var name …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate unobtrusive-ajax

15
推荐指数
1
解决办法
1万
查看次数

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

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

升级到jQuery 1.9.1via后NuGet,我开始收到JavaScript关于删除live()函数的错误jQuery 1.9.x.

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

Microsoft JScript错误

发现这个StackOverflow答案:https://stackoverflow.com/a/14512797 并进行了4次更改~\Scripts\jquery.unobtrusive-ajax.js.

我的~\Scripts\jquery.unobtrusive-ajax.js:

    $(document).on("click", "a[data-ajax=true]", function (evt) {
       ...
    });
    $(document).on("click", "form[data-ajax=true] input[type=image]", function (evt) {
       ...
    });
    $(document).on("click", "form[data-ajax=true] :submit", function (evt) {
       ...
    });
    $(document).on("submit", "form[data-ajax=true]", function (evt) {
       ...
    });
Run Code Online (Sandbox Code Playgroud)

我也物理删除jquery.unobtrusive-ajax.min.js并用于WebGrease 1.3.0从我的更新中重新生成它~\Scripts\jquery.unobtrusive-ajax.js.

但是,出于某种原因,我对不使用该.live()功能的更改并不坚持.我尝试停止运行MVC应用程序的IIS Express 8.0网站(localhost:63798).

在尝试再次运行F5以在调试模式下运行之前,还尝试执行Build-> Clean Solution,Build-> Rebuild Solution.

如果有人以前经历过这个并且有任何见解,我将非常感激.先感谢您.

asp.net-mvc jquery asp.net-mvc-4 unobtrusive-ajax visual-studio-2012

14
推荐指数
2
解决办法
1万
查看次数

是否建议在MVC 5中使用不引人注目的AJAX?

我知道有图书馆支持unobtrusive AJAX所以我问我的父亲(也.net程序员)他为什么不使用它,他的答案对我来说非常惊讶:

" unobtrusive AJAX(在你的情况下jquery.unobtrusive-ajax)不建议使用,所以我不使用它.我更喜欢AJAX使用手动写 请求JQuery."

我搜索了互联网,但我找不到那些unobtrusive AJAX不建议使用的地方.

那么使用jquery.unobtrusive-ajax和有什么问题MVC AJAX helpers吗?如果是这样,你能说出问题是什么并且可以解决吗?

asp.net-ajax unobtrusive-ajax asp.net-mvc-5

14
推荐指数
1
解决办法
1万
查看次数

不引人注意的AJAX错误:"未捕获的ReferenceError:未定义系统"

示例代码:在Visual Studio的MVC 5项目中,我设置了以下控制器和视图:

调节器

TestController.cs

public class TestController : BaseController
{
    public ActionResult Index()
    {
        return View("Index");
    }

    public PartialViewResult MyPartialView1()
    {
        return PartialView("PartialView1");
    }

    public PartialViewResult MyPartialView2()
    {
        return PartialView("PartialView2");
    }
}
Run Code Online (Sandbox Code Playgroud)

查看

Index.cshtml

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <script src="@Url.Content("~/Scripts/jquery-2.1.1.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
</head>
<body>
    <h1>Testing Unobtrusive AJAX</h1>
    @Ajax.ActionLink("Partial 1", "MyPartialView1", "Test",
                new AjaxOptions() { UpdateTargetId = "contentShouldLoadHere", InsertionMode = InsertionMode.Replace })
    |
    @Ajax.ActionLink("Partial 2", "MyPartialView2", "Test",
                new AjaxOptions() { UpdateTargetId = "contentShouldLoadHere", InsertionMode = …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc unobtrusive-ajax asp.net-mvc-5

13
推荐指数
1
解决办法
1万
查看次数

如何在MVC3 Ajax.ActionLink OnBegin,OnComplete Events中使用$(this)

我的控制器创建了这样的链接列表

<ul id="MainMenu">
@foreach (var item in Model.MenuItems)
{
    <li>@Ajax.ActionLink(item.Caption,
    item.ActionName,
    item.ControllerName,
    new AjaxOptions
    {
        UpdateTargetId = "pageBody",
        OnBegin = "BeginUpdatePage",
        OnComplete = "EndUpdatePage",
        OnFailure = "FailUpdatePage"
    })
    </li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)

我有一些像这样的JavaScript

function BeginUpdatePage() {
 $("#MainMenu li").removeClass('selected');
 $(this).parent().addClass('selected');
 $("#pageBody").fadeTo('slow', 0.5);
}

function EndUpdatePage() {
 $("#pageBody").fadeTo('slow', 1);    
}

function FailUpdatePage() {
 alert('There has been an error loading this page please try again.');
}
Run Code Online (Sandbox Code Playgroud)

在BeginUpdatePage函数第1行和第3行执行正常,但第2行"$(this).parent().addClass('selected');" 并没有明显地做任何事情......(我已经在我的css中宣布了这个课程).

我查看了Jquery文档(Jquery.ajax()),它说"this"是被点击的元素.我还检查了默认情况下在我的项目中的"jquery.unobtrusive-ajax.js".执行我的函数时,此文件也会传递"this".

"result = getFunction(element.getAttribute("data-ajax-begin"), ["xhr"]).apply(this,arguments);"
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么......我见过其他使用过这种技术的例子但是我整天都失败了!

如何在Begin,complete函数中找到被单击的元素.

jquery asp.net-mvc-3 unobtrusive-ajax

10
推荐指数
2
解决办法
9539
查看次数

用于局部视图的不显眼的Ajax表单

我在使用不显眼的ajax从联系我们表单发布数据时遇到了麻烦.

我的部分视图是这样的:

@model site.ViewModel.Home.ContactUsViewModel 

@using (Ajax.BeginForm("_ContactUsPartial", "Home", 
                       new AjaxOptions { UpdateTargetId = "result" }))
        {
            <fieldset>
                <legend>Contact Us</legend>
                @Html.ValidationSummary(true)
                <div id="result"></div>
                <div class="editor-label">
                 @Html.LabelFor(m => m.FullName)
                 @Html.ValidationMessageFor(m => m.FullName)</div>
                <div class="editor-field">@Html.TextBoxFor(m => m.FullName)</div>
                <!-- other fields from model -->
                <input type="submit" value="Submit"/>
            </fieldset>
        }
Run Code Online (Sandbox Code Playgroud)

我的部分视图放在另一个页面上,如下所示:

@Html.Partial("_ContactUsPartial", new ContactUsViewModel());
Run Code Online (Sandbox Code Playgroud)

我的家庭控制器是这样的:

[HttpPost]
public ActionResult _ContactUsPartial(ContactUsViewModel viewModel)
{
    if (ModelState.IsValid)
    {
       try
       {
           //send email
           return Content("Thanks for your message!");
       }
       catch (Exception ex)
       {
          return Content("Problem sending the email.");
       }
    }

            return …
Run Code Online (Sandbox Code Playgroud)

partial-views ajaxform asp.net-mvc-4 unobtrusive-ajax

9
推荐指数
1
解决办法
2万
查看次数

ASP.NET Core和JQuery不显眼的AJAX无法正常工作

如果我在.net 4.5中启动一个新项目并点击管理nuget包,请搜索ajax,然后点击install for ajax unobtrusive.然后我可以进入我的cshtml文件并输入@Ajax .___,例如@ Ajax.beginForm

如果我使用Dot Net Core创建一个新项目......我不能,而是它给了我无用的错误:

"当前上下文中不存在'Ajax'这个名字"

我在网上搜索,什么都没发现......

基本上我想在.net中使用Ajax调用创建一个Form

如:

" @using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" })) {"

谁知道我还能尝试什么?

在上面,我可以看到Ajax是AjaxHelper类型的对象,它来自System.web.mvc.webviewpage ...所以也许它从来没有意味着可用于.net核心

asp.net ajax unobtrusive-ajax asp.net-core

9
推荐指数
1
解决办法
8884
查看次数

如何在我的ASP.NET Core MVC项目中引用Microsoft.JQuery.Unobtrusive.Ajax

我正在尝试使用Microsoft.JQuery.Unobtrusive.Ajax。我首先使用NuGet安装软件包,然后按预期可以在依赖项中看到它。

我的问题是我找不到引用脚本的方法,因此无法在视图中使用它。在这里,我看到应该将其添加到布局中:

<script src="~/lib/Microsoft.jQuery.Unobtrusive.Ajax/jquery.unobtrusive-ajax.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

但是该路径导致没有文件:

在此处输入图片说明

这是我的控制器动作:

[HttpPost]
public IActionResult OrderItem([Bind("Id,Quantity")] Item item)
{
    return Json(new { foo= item.Id, boo= item.Quantity});
}
Run Code Online (Sandbox Code Playgroud)

表格:

<form asp-action="OrderItem" asp-controller="Menu" method="POST" data-ajax="true" data-ajax-update="#divEmp" data-ajax-mode="replace" data-ajax-complete="onComplete" data-ajax-failure="onFailed" data-ajax-success="onSuccess">
    <input asp-for="@i.Id" value="@i.Id" type="hidden" name="Id" />
    <input asp-for="@i.Quantity" value="@i.Quantity" type="number" name="Quantity" class="form-group" />
    <button class="btn btn-primary" type="submit">Add to Order</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我从控制器返回了JSON,但是我被重定向到了显示JSON数据的页面。我的目标是使用JSON对象中的数据来更新同一视图中的组件。

.net c# unobtrusive-ajax visual-studio-2017 asp.net-core-mvc-2.0

8
推荐指数
2
解决办法
6355
查看次数

添加jquery.unobtrusive-ajax.js引用后,Upload为null

如果我不参考,jquery.unobtrusive-ajax.js我可以在邮政上获得附件.如果我引用它它会给我null.

<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>


@using (Ajax.BeginForm("Index", "ContactSubmission", new AjaxOptions{ InsertionMode = InsertionMode.Replace, HttpMethod = "POST", OnSuccess = "updateSuccess" },
     new { enctype = "multipart/form-data",@class = "form-horizontal", role = "form" }))
      {
               ///code here
Run Code Online (Sandbox Code Playgroud)

}

[HttpPost]
public JsonResult Index(Contact contact)
{
    if (ModelState.IsValid)
    {
       if (contact != null)
       {
         string attachment = string.Empty;
         // HttpPostedFileBase Attachment
         if (contact.Attachment != null) attachment = SaveFile(contact.Attachment); 
                ......
Run Code Online (Sandbox Code Playgroud)

怎么办呢?

c# ajax asp.net-mvc jquery unobtrusive-ajax

7
推荐指数
2
解决办法
2400
查看次数

ASP.NET MVC 3和jquery.unobtrusive-ajax.min.js

我想使用Ajax.ActionLink Html助手,因此我需要jquery.unobtrusive-ajax.min.js库,但IE总是显示此错误:

Microsoft JScript运行时错误:无法设置属性'unobtrusive'的值:object为null或undefined

我已经读过解决方案是使用jquery.validate.min.js和jquery.validate.unobtrusive.min.js,但后来我无法识别服务器端的ajax调用.

asp.net-mvc-3 unobtrusive-ajax

6
推荐指数
1
解决办法
2万
查看次数

如果在Ajax表单中使用,jQuery不显眼的验证会忽略提交按钮上的"取消"类

我正在尝试使用可选的客户端验证

  • ASP.NET MVC 4,
  • 不引人注目的jQuery验证,
  • 不引人注目的ajax

这很好用

下面的图片显示了我对可选的客户端验证的意思:我的表单上唯一一个字段应该包含电子邮件,因此附加了一个电子邮件验证器.

在此输入图像描述

现在我们点击保存.由于我们的文本"name @ doamin"不是有效的电子邮件,因此会显示验证摘要.与验证摘要一起,我们取消隐藏"无论如何"保存按钮.

在此输入图像描述

第二个按钮是一个正常的提交按钮class="cancel".这指示jQuery.validate.js脚本在使用此按钮提交时跳过验证.

以下是视图的代码段:

@using (Html.BeginForm())
{
    <div>
        <input data-val="true" data-val-email="Uups!" name="emailfield" />
        <span class="field-validation-valid" data-valmsg-for="emailfield" data-valmsg-replace="false">*</span>
    </div>

    <input type="submit" value="Save" />
    @Html.ValidationSummary(false, "Still errors:")
    <div class="validation-summary-valid" data-valmsg-summary="true">
        <input type="submit" value="Save anyway" class="cancel" />
    </div>
}
Run Code Online (Sandbox Code Playgroud)

一切正常.

问题

如果我切换到Ajax表单,第二个提交按钮 - "仍然保存"按预期停止工作.它的行为与正常行为相同,并且在验证成功之前阻止提交.

以下是"ajaxified"视图的代码段:

@using (Ajax.BeginForm("Edit", new { id = "0" },
        new AjaxOptions
            {
                HttpMethod = "POST",
                InsertionMode = InsertionMode.Replace,
                UpdateTargetId = "ajaxSection", …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate unobtrusive-validation asp.net-mvc-4 unobtrusive-ajax

6
推荐指数
2
解决办法
7734
查看次数

data-ajax-update 和 data-ajax-mode="replace" 在 dotnet core jquery unobtrusive ajax 中不起作用

我有一个锚点,它应该用局部视图替换网格。

<a class="btn btn-primary" 
                        data-ajax="true" 
                        data-ajax-method="GET"
                        data-ajax-mode="replace"
                        data-ajax-update="content"
                        data-ajax-url="@Url.Action("add","user")"> Create User </a>
 <div class="row table-area">
    <div class="col-md-12" id="content">
        @Html.AjaxGrid(Url.Action("results", "user"))
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我看到它使用部分视图调用用户操作,但它从不使用id="content".

这是我的控制器方法 -

    [Route("add")]
    public IActionResult AddUser()
    {
        return PartialView("Partials/AddUser",new RegisterViewModel());
    }
Run Code Online (Sandbox Code Playgroud)

理想情况下,它应该用部分视图完全替换网格内容,但它不会替换 . 响应状态为 200,我可以看到内容正在响应中返回。有人知道这里有什么问题吗?

unobtrusive-ajax asp.net-core-mvc .net-core asp.net-core

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