Asp.net mvc 不引人注目的ajax事件中的表单元素访问

Asp.net mvc 不引人注目的ajax事件中的表单元素访问,asp.net-mvc,jquery,unobtrusive-javascript,unobtrusive-ajax,Asp.net Mvc,Jquery,Unobtrusive Javascript,Unobtrusive Ajax,我想为使用不引人注目的ajax的特定表单挂接ajax回调。 使用不引人注目的ajax,此标准表单的ajax调用没有问题: <form action="/xyz" data-ajax="true" data-ajax-method="POST" id="someformid" method="post"> <input type="text" name="bla" /> <button>submit</button> </for

我想为使用不引人注目的ajax的特定表单挂接ajax回调。 使用不引人注目的ajax,此标准表单的ajax调用没有问题:

<form action="/xyz" data-ajax="true" data-ajax-method="POST" id="someformid" method="post">
    <input type="text" name="bla" />
    <button>submit</button>
</form>
但这似乎不起作用。 这种方法会命中处理程序,但不仅仅针对所需的表单。但是对于所有的ajaxComplete事件

var form = $("#someformid");
form.submit(function (eevent) {
    $(document).ajaxComplete(function (e, request, options) {
        // this hits ok. but not just for this form
    });
});
下一个选项是使用“data ajax success”。但这似乎不能提供表单上下文

因此,问题是: 如何仅为一个表单连接ajaxComplete事件

注: 我希望避免类似匹配url或向查询中添加一些唯一id之类的变通方法。


谢谢

来自
.ajaxComplete()
文档:

从jQuery1.8开始,只应附加.ajaxComplete()方法 记录。所有ajaxComplete处理程序都会被调用,不管是什么 Ajax请求已完成。如果您必须区分 请求时,使用传递给处理程序的参数。每一次 执行ajaxComplete处理程序时,会将事件对象 XMLHttpRequest对象,以及 创建请求。例如,您可以将回调限制为 仅处理与特定URL相关的事件:

因此,我的理解是,如果您知道您将运行一个特定的URL(您的php处理脚本),那么您可以在设置中将该URL传递给
.ajaxComplete()
方法。。。。(在您的情况下,“/xyz”)


我会尝试给出
和id,并使用该id作为
.ajaxComplete()
的选择器。只是一个建议,不知道是否有效。
var form = $("#someformid");
form.submit(function (eevent) {
    $(document).ajaxComplete(function (e, request, options) {
        // this hits ok. but not just for this form
    });
});
$( document ).ajaxComplete(function( event, xhr, settings ) {
  if ( settings.url === "/xyz" ) {
    $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
      xhr.responseHTML );
  }
});