javascript - 在 Javascript ASP.NET Ajax 回调函数中获取对调用对象的引用?

标签 javascript jquery asp.net-ajax

我在一个控件上调用一个 ASP.NET Ajax 方法(例如一个用 [Ajax.AjaxMethod] 标记的方法),当用户单击一个链接时,它是在 JavaScript 中动态创建的(基本上它是在表格内,当单击链接时,将在 JS 代码中构建一个 tr/td 并添加到表格中)。在回调函数中,我需要知道调用的是哪一行,因为我只是将数据附加到该行中的输入控件;我有一个隐藏字段,其中包含添加的项目总数,但我不能使用它,因为它总是添加到 last 行(因为它在添加新行时递增)而不是添加到的行正在触发功能。

类似下面的内容:

// fieldName is a lookup string...
function loadOperators(fieldName) { 
    MyPage.LoadOperatorsFor(fieldName, loadOperators_Callback);
}

function loadOperators_Callback(response) { 
    var currentRow = // how to obtain this?

    // do other stuff here...
} 

我也在使用 jQuery,但这些方法是以 ASP.NET AJAX 样式完成的,因为这是我们目前在工作中使用的样式。

我如何才能确定触发 Ajax 函数的实际行,所以我只填充包含在该行中的下拉列表(我不能依赖用户创建一行,然后填充该行;他们可能会创建说 5 行然后回到第 2 行并选择一些东西,所以我必须知道他们在第 2 行而不是 3/4/5 中选择了一个值)?它似乎不是响应对象的一部分,但回调函数似乎不接受任何额外的参数。

我唯一能想到的就是将它添加到我的 AjaxMethod 中,这样它就会在响应中传回,但这充其量似乎是一种 hack,因为我返回了一个 DataSet 并且行号与数据。

我忘了补充,我使用ASP.NET AJAX库,只使用jQuery和[Ajax.AjaxMethod]标记方法

最佳答案

您需要传递一个委托(delegate)作为您的回调参数

function loadOperators(fieldName) { 
    MyPage.LoadOperatorsFor(fieldName, Function.createDelegate({"fieldName":fieldName},loadOperators_Callback));
}

在你的回调中你可以

function loadOperators_Callback(response) { 
    var currentRow = this.fieldName;
    // do other stuff here...
} 

关于javascript - 在 Javascript ASP.NET Ajax 回调函数中获取对调用对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515707/

相关文章:

asp.net - 如何为 ASP.NET AJAX UpdatePanel 请求重写 HtmlTextWriter?

javascript - 使用 axios 和 JavaScript 上传图像并在表格中指示响应

javascript - Google Chart 仪表板控制事件处理程序

滚动时 jQuery ui 对话框停留在底部

javascript - 如何让 onmouseover 和 onmouseout 设置按需要工作?

css - 你能在 div 中放置一个样式 block 吗

javascript - + 运算符与 parseFloat

javascript - 从表单数组中获取表单内容

javascript - 成功时无法获取 json 对象

javascript - 如何从客户端(通过javascript)获取由asp.net ajax修改的文本框的值?