gpt4 book ai didi

javascript - 访问在 PageMethod 调用的回调函数中设置的 JavaScript 变量

转载 作者:行者123 更新时间:2023-11-28 10:20:44 27 4
gpt4 key购买 nike

在单击事件中,我调用 PageMethods 请求,其中包含两个回调函数:OnServerValidationSuccess 和 OnServerValidationFailure。我还尝试设置创建一个名为 clientResult;

的对象
    var clientResult = { rc: "", msg: "" };

$('#btnSave').click( function () {
PageMethods.ServerValidateCreateCompany(companyName, domainName, country, OnServerValidationSuccess, OnServerValidationFailure);
alert(clientResult.rc); //this is null!
});

在OnServerValidationSuccess中,result参数包含异步响应。在那里我尝试将其分配给 clientResult

//On Success callback
function OnServerValidationSuccess(result, userContext, methodName) {
clientResult = result;
if (clientResult.msg.length != 0) {
document.getElementById('resMsg').innerHTML = clientResult.msg;
$('#resMsg').addClass('warning');
}
}

我将result分配给回调函数中的本地clientResult变量。它应该包含完整形成的服务器响应,该响应由服务器端 WebMethod 正确发送。但是,在调用 PageMethod 后,它仍然为 null 或为空。我必须做什么才能将回调中设置的变量分配给局部变量以便我可以访问它?

最佳答案

您似乎正确地将值分配给 clientResult,您只是访问得太早了。

您正在进行异步/非阻塞调用,这意味着它会立即返回,但会继续在后台工作。因此,您的 JavaScript 会立即从对 PageMethods.ServerValidateCreateCompany 的调用中返回,并继续处理警报。但是您的请求还没有时间完成,并且您的成功回调 (OnServerValidationSuccess) 甚至还没有运行,因此您会得到 undefinednull .

您应该在 OnServerValidationSuccess 函数中调用要处理响应的任何函数,该函数将在其中接收响应。也许是这样的(您似乎已经使用 msg 做了一些事情,只需将您的工作与 rc 移到此处即可)

//On Success callback
function OnServerValidationSuccess(result, userContext, methodName) {
clientResult = result;
alert(clientResult.rc); //this will work
process(clientResult); //process the response here
if (clientResult.msg.length != 0) {
document.getElementById('resMsg').innerHTML = clientResult.msg;
$('#resMsg').addClass('warning');
}
}

关于javascript - 访问在 PageMethod 调用的回调函数中设置的 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719132/

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