当前位置: 首页 > 面试题库 >

在AJAX中,如何从onreadystatechang = function()内部检索变量

司寇嘉茂
2023-03-14
问题内容

是否可以onreadystatechange从函数外部检索函数中设置的变量?
--edit–
关于函数的执行:
如果可能的话,我想单击执行ajaxFunction(),然后单击执行
popup(),或者以某种方式等待ajax函数结束,然后调用警告框

用伪代码:

function ajaxFunction(){
    //creating AJAX 
    ...
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function (){
        if(ajaxRequest.readyState == 4){
            //success code
            ======>Here i want to set variable <=====
            var MyVariable='MyContent';
        }
    }
    //Retrieving page
    ....
}

function popup(){
    ajaxFunction();
    alert(MyVariable);
}

问题答案:

以下代码假定ajax请求是同步的:

function popup(){
    ajaxFunction();
    alert(MyVariable);
}

但是由于同步请求阻塞了浏览器,因此您几乎在所有情况下都应使用异步调用(如果我没记错的话,不应在同步请求上调用onreadystatechange,但是不同的浏览器的行为会有所不同)

您可以做的是:

function ajaxFunction(callback){
    //creating AJAX 
     ...
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function (){
        if(ajaxRequest.readyState == 4){
            //success code
            callback('MyContent')
        }
    }
    //Retrieving page
     ....
}

function popup() {
  ajaxFunction(function(MyVariable){alert(MyVariable););
}


 类似资料:
  • 在阅读(https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/)时,我不知道如何检索变量? 目前,我正在努力找出如何访问以前设置的过程变量。我尝试的是: 我有一个简单的bpmn流程,其中有start事件、1个服务任务和end事件,我通过传递2个变量(a&B)来启动我的流程,我的服务任务实现如下java类: 有

  • 问题内容: 我整整一天都被这个问题困扰。我试图做的是使用Ajax从视图向控制器发送2个值。这是我的代码: 和我的hot_products控制器: 我不知道如何获取2个值,分别是start_time和end_time。请帮我。提前致谢。PS:我正在使用cakephp 2.3 问题答案: 为您提供控制器中的帖子数据。 更新 您的Ajax错误,

  • 我试图弄清楚如何从函数的外部获取变量,在jQuery的函数内部获取变量,但我得到的是。有什么办法可以做到这一点吗? 我的代码的一个简单示例: 但当我在函数外定义变量时,它起作用: 为什么? 感谢任何帮助!谢谢!

  • 问题内容: 我在另一个类()中有一个匿名内部类。 双方并返回空数组。 我在Javadocs中找不到关于此的一些提示。 可以使用反射以某种方式检索匿名内部类吗? 匿名内部类和普通内部类之间还有什么显着区别? 问题答案: 如果使用反射,那可能是一个非常糟糕的主意。抛开这些,我相信您可以在运行时添加其他内部类,因此列出可能尚未考虑的类没有意义。我想列出当前加载的类需要通过Java代理或类似的代理。 匿名

  • 问题内容: 我们如何从文本字段中检索值?我需要将值转换为进一步处理。我已经在单击按钮时创建了一个文本字段,我需要存储输入到中的值,你能提供一个代码段吗? 问题答案: 参见Java文档中的JTextField 示例代码可以是:

  • 问题内容: 我只需要更新,而不需要更新整个表单。我尝试使用,,,但没有人正在为我想。使用时,它正在检查不需要执行的验证。 我该如何实现? 问题答案: 首先,仅因为它根本不支持该属性,它的确不会与一起使用。也许您真的打算使用? 修复a身份后, 阅读完该答案后,您应该已经发现数据表在该特定的代码段中由标识。因此,应该采取以下所有措施: 请注意,直到PrimeFaces 3.3为止,在某些复杂的UI组合