0

javascript:

            var Enabled = false;
            function GateWay_Enabled(GateWay_Name) {
                PageMethods.GateWay_Enabled(GateWay_Name, onRequestComplete, onError);
                return Enabled;
            }

            function onRequestComplete(result) {
                Enabled = result;
            }
            function onError(result) {
                alert('Error');

            }
            var MyVariable = GateWay_Enabled('GateWay_Name');

服务器端代码(C#):

[WebMethod]
[ScriptMethod]
public static bool GateWay_Enabled(string GateWay_Name)
{
    bool Enabled = true;
    return Enabled;
}

为什么 MyVariable 总是假的?
有没有另一种写法PageMethods.GateWay_Enabled(GateWay_Name, onRequestComplete, onError);作为GateWay_Enabled函数的返回?我正在寻找这样的东西:

var MyBoolVariable =
bool.parse(PageMethods.GateWay_Enabled(GateWay_Name,
onRequestComplete, onError));

编辑 1:
一切正常,PageMethods 没有错误。
脚本管理器中的 EnablePageMethods 为 true。

编辑 2:
我不能将 MyVariable 放在 onRequestComplete() 函数中。
我制作了 MyVariable 以使我的代码更容易。
MyVariable 的真实代码是:

    GateWays = [
                        { "Cod": 1, "Enabled": GateWay_Enabled('1') },
                        { "Cod": 2, "Enabled": GateWay_Enabled('2') },
                        { "Cod": 3, "Enabled": GateWay_Enabled('3') },
                        { "Cod": 4, "Enabled": GateWay_Enabled('4') },
                        { "Cod": 5, "Enabled": GateWay_Enabled('5') },
                        { "Cod": 6, "Enabled": GateWay_Enabled('6') },
                        { "Cod": 7, "Enabled": GateWay_Enabled('7') }
                ];

我想在另一个地方使用这个数组。
我不能把它放在 onRequestComplete() 函数中。
我该怎么办?

4

4 回答 4

2

您需要重新考虑您的代码。现在你正在做一些GateWay_Enabled有结果的方法。将这些东西放在单独的方法中并从 onRequestComplete方法中调用它;

var Enabled = false;
function GateWay_Enabled(GateWay_Name) {
    PageMethods.GateWay_Enabled(GateWay_Name, onRequestComplete, onError);
}

function onRequestComplete(result) {
    alert(result); // you will get results here; 
    Enabled = result;
    //do something with value 
}
function onError(result) {
    alert('Error');
}

GateWay_Enabled('GateWay_Name');  // you can't get direct output from this method,  
// have to get results from success callback method or onError callback method 
于 2012-05-29T11:00:34.330 回答
1

调用 PageMethods 是异步的:在调用return Enabled函数之前执行该行onRequestComplete

尝试将读取MyVariable的任何代码放入onRequestComplete函数中,result改为使用。

在您的 Edit2 和评论之后,我建议您:

  1. GateWays重构您的 PageMethod 以返回给定输入 ID 数组的整个数组,以避免进行 7 次 AJAX 调用。
  2. 让所有这个AJAX在用户点击链接的时候被调用,然后把后续的代码放到onRequestComplete方法里面。

或者,如果此数据在用户点击之间没有变化,我建议您在服务器端获取它。

没有简单的方法可以确保用户单击代码等到所有七个调用都完成。

于 2012-05-29T10:49:07.987 回答
0

您是否在 ScriptManager 中添加了 EnablePageMethods="true"?

于 2012-05-29T10:47:29.460 回答
0

您正在检查MyVariable之前onRequestComplete执行的值

于 2012-05-29T10:49:09.553 回答