【问题标题】:How to store global variable in one ajax file and get from another ajax file?如何将全局变量存储在一个 ajax 文件中并从另一个 ajax 文件中获取?
【发布时间】:2021-04-16 11:52:47
【问题描述】:

假设我有 2 个 ajax 文件.. first.js 和 second.js .

如果我像这样在 second.js 中写一个全局变量-

$(document).ready(function(){
   var globalData = null;
$.ajax(){
     url: //statement,
     type: //statement,
     data: //statement,
    success:  {
                  
        success: function(response){

           // Show response
          
           if(condition) // this condition is not a variable  but a 'if condition'
           {
              globalData=1;
              
           }else{
              globalData=0;
           }
               }
}

现在如何在 first.js 中获取 globalData 变量?

【问题讨论】:

  • 您能告诉我们您的需求是什么吗?而不是如何实施解决方案?为什么需要共享这些变量?也许我们可以找到更好的解决方案。
  • globalData 并不像你想象的那么全球化。
  • @HassenCh。在我的 second.js 中,我用来验证用户名是否可用,然后在提交表单可用的 first.js 中,我想使用该全局变量来检查用户名是否可用,如果不可用则禁用表单提交按钮。否则让用户提交。这就是逻辑
  • @Andy 你能告诉我如何解决这个问题吗?
  • @jerry 您使用了错误的方法。您应该将“用户名”的参数传递给一个检查它是否可用的函数。然后您使用该输出来了解您是否应该让用户提交表单。使用“全局”变量是完全错误的。

标签: javascript ajax


【解决方案1】:

如果您希望变量是全局变量,请删除 var 关键字。请注意,它仅适用于sloppy mode,一般来说这是一种不好的做法。更喜欢链接异步操作而不是在它们之间共享变量。

确实,通过编写这种代码,您永远不知道变量是否已设置。

Promises 对此非常有帮助,还有一个替代 XMLHttpRequest 的方法可以返回 Promisesfetch

这是一个简单的示例,说明您尝试使用全局 Promise 来确保数据在您需要时就在那里:

// first.js 
const first = fetch(firstUrl, { method: ..., body: ... }).then(x => {
  // Some logic
  return globalData;
});

// second.js
const second = first.then(globalData => fetch(secondUrl, { method: ..., body: ... }));

在此示例中,我保留了 globalData 名称以显示它与您的代码的等效性,但它不再准确,应该更改以更清晰。

【讨论】:

  • 你能展示一个关于如何获取全局变量的小代码示例吗?
  • 我的建议就是不要使用全局变量,但如果你想这样做,只需删除var
  • 老派的方法是使用对象命名空间。
猜你喜欢
  • 2016-08-30
  • 2011-11-28
  • 1970-01-01
  • 2013-08-31
  • 2021-09-23
  • 2011-07-06
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多