如何通过调用AJAX.BeginForm'onsuccess的名称来获取表单或div

时间:2012-08-01 09:20:58

标签: javascript jquery asp.net-mvc asp.net-mvc-2 ajax.beginform

我在div元素中调用了Ajax.BeginForm,所以我想得到表单所在的div元素。即我想要等效的

function function1(event){
var table = $(event.target).parents("table");
}

可以从Ajax.beginform的onsuccess函数中使用。任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

事实证明,在onsuccess函数中,“this”指的是表单元素。所以我可以轻松使用,

$(this).find("mydiv");

$(this).parent("table").find("mydiv");

答案 1 :(得分:1)

MVC4似乎打破了它。可怕的"这个"现在是XHR。 要解决此问题,请使用这个讨厌的黑客:

$(function() {

    var lastEvent = null;
    $("body").on("submit", "form[data-ajax=true]", function(e) {

        lastEvent = e;

    });
    window.TagXhrWithEventTarget = function(xhr) {

        xhr.capturedSubmitEvent = lastEvent;

    }

});

并以开始形式:

@using (Ajax.BeginForm("MyAction", "MyController", new AjaxOptions
{
    HttpMethod = "POST",
    OnSuccess = "ProcessResponse",
    OnBegin = "TagXhrWithEventTarget"
}

然后在ProcessResponse:

function ProcessResponse(data, status, xhr) {

    var e = xhr.capturedSubmitEvent;
    var control = e.target;
    . . .
相关问题