在Ajax链接上点击javascript错误?

时间:2014-03-13 14:51:27

标签: 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", "DeleteResponse", new { responseid = @times.ResponseId }, new AjaxOptions { UpdateTargetId="dummy",OnBegin = "begin",OnComplete="complete",OnFailure="fail",OnSuccess = "success"})</td>
    </tr>
}

这些是函数

$(function begin() {
    alert("begin");
});
$(function complete() {
    alert("complete");
});
$(function fail() {
    alert("fail");
});

function deleteResponse(id){
        var url = $("#providedTimes").data('url');
        url = url + "&t=" + new Date().getTime();

        $.get(url, function (data) {

            $('#providedTimes').html(data);
        });
    };

当我运行应用程序时,我得到javascript警报开始完成然后失败,都是两次。

当我尝试单击删除时,我会在控制台上看到错误 enter image description here 我渲染的包是

   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"));

并在_layout视图中

@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")

知道我为什么在控制台出错?

2 个答案:

答案 0 :(得分:1)

你想要的是:

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

$(begin);

所有其他方法都一样。甚至不确定你想在就绪处理程序上调用Fail / Complete。

答案 1 :(得分:1)

定义这样的函数时:

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

你不是真正以你的思维方式“定义”这个功能。 $()期望一个函数作为参数,你给它一个。它只是执行该功能。一旦完成,该定义不会保留。因此,在此声明之后,begin不再是其他任何地方的范围。

直接定义您的功能:

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

如果要在文档准备就绪时执行该功能,您仍然可以将其传递给jQuery对象:

$(begin);