在Ajax链接上单击javascript错误?

在Ajax链接上单击javascript错误?,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,在我看来,我有这个ajax actionlink @foreach (var times in Model.ProvidedDateTimes) { <tr> <td> @times.StartDateTime &nbsp; to &nbsp; @times.EndDateTime </td> <td> @Ajax.ActionLink("Delete"

在我看来,我有这个ajax actionlink

@foreach (var times in Model.ProvidedDateTimes)
{
    <tr>
        <td>
            @times.StartDateTime &nbsp; to &nbsp; @times.EndDateTime
        </td>
        <td> @Ajax.ActionLink("Delete", "DeleteResponse", new { responseid = @times.ResponseId }, new AjaxOptions { UpdateTargetId="dummy",OnBegin = "begin",OnComplete="complete",OnFailure="fail",OnSuccess = "success"})</td>
    </tr>
}
当我运行应用程序时,我得到javascript警报开始完成,然后失败,全部两次

当我尝试单击删除时,控制台上出现错误,提示 我呈现的包是

   bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                "~/Scripts/jquery-2.1.0.min.js",
                 "~/Scripts/jquery.unobtrusive-ajax.min.js"));

    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                "~/Scripts/jquery.validate.min.js",
                "~/Scripts/jquery.validate.unobtrusive.min.js"));
和在布局视图中

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")


@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/Scripts/jquery-ui-1.10.4.js")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/Kendo")
@Scripts.Render("~/bundles/toastr")
你知道我为什么在控制台中出错吗?

你想改为:

function begin() {
    alert("begin");
};

$(begin);

所有其他方法也是如此。甚至不确定是否要在就绪处理程序上调用Fail/Complete。

当您定义这样的函数时:

$(function begin() {
    alert("begin");
});
您并没有按照自己的想法真正“定义”函数
$()
需要一个函数作为参数,而您正在给它一个。它所做的就是执行这个函数。一旦完成,这个定义就不会被保留。因此,紧接着这条语句,
begin
不再在其他任何地方的范围内

只需直接定义您的函数:

function begin() {
    alert("begin");
};
如果要在文档准备就绪时执行该函数,仍然可以将其传递给jQuery对象:

$(begin);

为什么要将函数封装在
$()
中?如果您的页面只是说
function begin()
而不是
$(function begin(){})
,那么您可能正在
文档.ready
事件中创建函数。它们在it之外不可用。在表单之前创建一个
标记(或
foreach
..),并在其中定义函数。
$(begin);