gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:34:21 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com