我在一个控件上调用一个 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/