【问题标题】:How to access the context object as an array in PageMethods callback如何在 PageMethods 回调中将上下文对象作为数组访问
【发布时间】:2009-01-02 11:36:59
【问题描述】:

我似乎无法使用设置的循环上下文访问上下文对象:var context = [id1, id2, id3];

此回调函数有效:

function OnChangeSucceeded(result, context, methodName) {
    document.getElementById(context[0]).disabled = result;
    document.getElementById(context[1]).disabled = result;
    document.getElementById(context[2]).disabled = result;
}

此回调函数失败:

function OnChangeSucceeded(result, context, methodName) {
        for(var indx = 0; indx < context.length; indx++) {
           document.getElementById(context[indx]).disabled = result;
        }

    }

【问题讨论】:

    标签: asp.net javascript callback


    【解决方案1】:

    查看调用代码会很方便,这样我们就可以看到您的上下文是如何建立的。我猜你已经把它设置为一个关联而不是一个数组,所以当你在回调中使用它时,没有长度属性(或者它是 0)。

    当你设置它时,它应该是这样的:

    var context = new Array();
    context[0] = 'elem0';
    context[1] = 'elem1';
    context[2] = 'elem2';
    

    不是

    var context = { 0: 'elem0', 1: 'elem1', 2: 'elem2' };

    如果这不是问题,则尝试在 FireFox/FireBug 中检查它,方法是在 onChangeSucceeded 函数中设置断点并检查实际上下文对象以查看它具有哪些属性。

    【讨论】:

    • 调用 PageMethods 的函数将上下文参数设置为: var context = [id1, id2, id3];我已将其更改为: var context = new Array(id1, id2, id3);但仍然得到相同的结果,我假设上下文参数作为某种其他对象传递给回调。
    【解决方案2】:

    是因为你的错字吗?

    for(var index = 0; indx < context.length; indx++) {
    

    应该是

    for(var indx = 0; indx < context.length; indx++) {
    

    【讨论】:

    • 错字是因为我重写了函数而不是复制它。问题仍然存在。
    【解决方案3】:

    这是指向 firebug tvanfosson 的指针。

    我已经重做了这个功能,现在它的工作原理是:

    function OnChangeSucceeded(result, context, methodName) {
        for (controlId in context) {
            document.getElementById(context[controlId]).disabled = result;
        }
    }
    

    我不确定是否是因为上下文最初创建为:

    context = [id1, id2, id3];
    

    我现在已经替换为:

    context = new Array(id1, id2, id3);
    

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 2012-01-02
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2020-01-19
      • 2019-04-25
      • 2021-12-10
      相关资源
      最近更新 更多