【问题标题】:ajax.beginform on success do nothingajax.beginform 成功什么都不做
【发布时间】:2018-02-06 16:39:41
【问题描述】:

早安,

我正在尝试在我的 asp.Net MVC 项目中使用 ajax.beginform 来创建成功警报。 问题是我无法让它工作,我也没有收到任何错误消息。

    [HttpPost]
    public ActionResult Create(Details details)
    {
        //do something
        //add details to db
       return View("Create", details);
    }
public class Details
{
public string Name { get; set; }
public string Email { get; set; }
}

这是我的看法

 <script src="~/Scripts/jquery-1.8.2.min.js"></script>
 <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
@using (Ajax.BeginForm("Create", new AjaxOptions()
{
OnSuccess= "ajaxSuccess"
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "Please fix the following errors.")
<div class="editor-label">
@Html.LabelFor(model => model.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Name)
        @Html.ValidationMessageFor(model => model.Name)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Email)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Email)
        @Html.ValidationMessageFor(model => model.Email)
    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
}
@section scripts
{@Scripts.Render("~/bundles/jqueryval")
<script>
  function ajaxSuccess () { alert('this is ajaxSuccess'); }
 $(document).ready(function () 
  {
function ajaxSuccess () { alert('this is ajaxSuccess'); }
   });
</script>
}

如您所见,我正在使用Jquery.unobstrusive-ajax.min.js 脚本。我的操作已完成并返回视图,但我的控制台中没有错误,也没有警报。我错过了什么吗?

更新:我在准备好的文档中添加了一个警报,但没有触发 **更新 2:** 将函数更改为函数 ajaxSuccess () { alert('this is ajaxSuccess'); }

【问题讨论】:

  • 你试过function ajaxSuccess () { alert('this is ajaxSuccess'); }而不是将其存储在变量中吗?
  • 我会更新它,但它没有再做任何事情:c

标签: javascript jquery asp.net ajax


【解决方案1】:

首先,查看“网络”选项卡,看看脚本是否正确解析,或者是否返回 404。

也尝试不使用 tilda 和本地路径,看看是否有效:

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

或者通过这种方法使用 tilda:Using tilde in script tag src attribute

编辑:由于内部函数,您没有在document.ready 上收到警报;改变:

$(document).ready(function () 
  {
function ajaxSuccess () { alert('this is ajaxSuccess'); }
   });

到:

$(document).ready(function () {
   alert('this is document ready');
});

您可能会看到警报。

【讨论】:

  • 我在捆绑配置中添加了不显眼的内容。当我点击提交按钮时,我检查了网络选项卡,我可以看到不显眼的 ajax 有一个“待定”的时间
  • 上面编辑好了。还要查看源代码以确保正在验证的 HTML 元素具有定义在其上的数据验证属性(data-val-required,我认为是必需的,等等)。另外,我实际上没有看到对您的模型属性的任何验证;这是故意遗漏的吗?
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 2020-01-16
  • 1970-01-01
  • 2020-10-16
相关资源
最近更新 更多