Javascript 使用ajax()时的全局变量

Javascript 使用ajax()时的全局变量,javascript,jquery,ajax,Javascript,Jquery,Ajax,我必须执行ajax()回调函数之外的json=myData,才能将其作为全局变量,我想知道这是一种好的做法吗?我还可以如何使用ajax回调的数据 为什么要打破Ajax的异步特性?像这样的“问题”在StackOverflow上被反复询问。但是他们忘记了一件关键的事情,那就是Ajax被设计成异步的,并且通过尝试在函数之外使用数据,您在某种程度上打破了这一规则 TL;DR:Ajax被设计成异步的,让我们保持这种方式吧 如果要保持结构整洁,请定义一个处理程序 $.ajax({ type

我必须执行ajax()回调函数之外的
json=myData
,才能将其作为全局变量,我想知道这是一种好的做法吗?我还可以如何使用ajax回调的数据

为什么要打破Ajax的异步特性?像这样的“问题”在StackOverflow上被反复询问。但是他们忘记了一件关键的事情,那就是Ajax被设计成异步的,并且通过尝试在函数之外使用数据,您在某种程度上打破了这一规则

TL;DR:Ajax被设计成异步的,让我们保持这种方式吧


如果要保持结构整洁,请定义一个处理程序

$.ajax({
        type: "POST",
url:"example.com",
        success: function (data) {
            myData = data;


        },
        error: function (response) {
        }
//here json = myData; 
    });

我不建议使用这种方法,请阅读上面的说明。 如果您确实需要执行同步Ajax请求(sjax?Lol),jQuery确实提供了“关闭异步特性”的功能,使用对象中的
async:false
似乎可以解决这个问题。以下是一个示例:

function handler(data) {
  // Handle data
  console.log(data)
}

$.ajax({
    url: "http://localhost",
    type: "POST",
    data: {'example':true},
    success:handler
});
正如您所看到的,
async:false
包含在其中。基于构建的


但是请记住,我不建议您去掉Ajax的异步特性(这是为了大声呼喊)。但是如果您必须这样做的话。

为什么您要打破Ajax的异步特性呢?“问题”类似的问题已经在StackOverflow上被反复询问过了,但是他们忘记了一件关键的事情,那就是Ajax被设计成异步的,并且通过尝试在函数之外使用数据,您在某种程度上打破了这条规则

TL;DR:Ajax被设计成异步的,让我们保持这种方式吧


如果要保持结构整洁,请定义一个处理程序

$.ajax({
        type: "POST",
url:"example.com",
        success: function (data) {
            myData = data;


        },
        error: function (response) {
        }
//here json = myData; 
    });

我不建议使用这种方法,请阅读上面的说明。 如果您确实需要执行同步Ajax请求(sjax?Lol),jQuery确实提供了“关闭异步特性”的功能,使用对象中的
async:false
似乎可以解决这个问题。以下是一个示例:

function handler(data) {
  // Handle data
  console.log(data)
}

$.ajax({
    url: "http://localhost",
    type: "POST",
    data: {'example':true},
    success:handler
});
正如您所看到的,
async:false
包含在其中。基于构建的


但是请记住,我不建议您去掉Ajax的异步特性(这是为了大声呼喊)。但是如果您必须这样做的话。

为什么您要打破Ajax的异步特性呢?“问题”类似的问题已经在StackOverflow上被反复询问过了,但是他们忘记了一件关键的事情,那就是Ajax被设计成异步的,并且通过尝试在函数之外使用数据,您在某种程度上打破了这条规则

TL;DR:Ajax被设计成异步的,让我们保持这种方式吧


如果要保持结构整洁,请定义一个处理程序

$.ajax({
        type: "POST",
url:"example.com",
        success: function (data) {
            myData = data;


        },
        error: function (response) {
        }
//here json = myData; 
    });

我不建议使用这种方法,请阅读上面的说明。 如果您确实需要执行同步Ajax请求(sjax?Lol),jQuery确实提供了“关闭异步特性”的功能,使用对象中的
async:false
似乎可以解决这个问题。以下是一个示例:

function handler(data) {
  // Handle data
  console.log(data)
}

$.ajax({
    url: "http://localhost",
    type: "POST",
    data: {'example':true},
    success:handler
});
正如您所看到的,
async:false
包含在其中。基于构建的


但是请记住,我不建议您去掉Ajax的异步特性(这是为了大声呼喊)。但是如果您必须这样做的话。

为什么您要打破Ajax的异步特性呢?“问题”类似的问题已经在StackOverflow上被反复询问过了,但是他们忘记了一件关键的事情,那就是Ajax被设计成异步的,并且通过尝试在函数之外使用数据,您在某种程度上打破了这条规则

TL;DR:Ajax被设计成异步的,让我们保持这种方式吧


如果要保持结构整洁,请定义一个处理程序

$.ajax({
        type: "POST",
url:"example.com",
        success: function (data) {
            myData = data;


        },
        error: function (response) {
        }
//here json = myData; 
    });

我不建议使用这种方法,请阅读上面的说明。 如果您确实需要执行同步Ajax请求(sjax?Lol),jQuery确实提供了“关闭异步特性”的功能,使用对象中的
async:false
似乎可以解决这个问题。以下是一个示例:

function handler(data) {
  // Handle data
  console.log(data)
}

$.ajax({
    url: "http://localhost",
    type: "POST",
    data: {'example':true},
    success:handler
});
正如您所看到的,
async:false
包含在其中。基于构建的



但是请记住,我不建议您去掉Ajax的异步特性(它是以名称命名的,因为它大声呼喊)。但如果您必须这样做。

它甚至不是有效的JS。@zerkms真的吗?它为我编译。@Katana314好吧,如果您取消注释
json=myData;
它在哪里-它将无效anymore@zerksm对,这就是为什么他把它注释掉了,为什么他把它作为一个问题来问,因为他知道这行是无效的,他想知道如何使它有效(Jamen的回答涵盖了这一点)@Katana314我不能同意。“我必须使用ajax()回调函数之外的json=myData将其作为全局变量,我想知道这是一种好的做法吗?”---OP没有说明它不起作用,OP询问这样做是否是一种好的做法。如果一个人有无效的东西,他们会明确地告诉他(至少这是我在问问题时所期望的)。它甚至不是有效的JS。@zerkms真的吗?它为我编译。@Katana314好吧,如果你取消注释
json=myData;
它所在的位置,它将无效anymore@zerksm对,这就是为什么他把它注释掉了,为什么他把它作为一个问题来问,因为他知道这行是无效的,他想知道如何使它有效(Jamen的回答涵盖了这一点)@Katana314我不能同意。“我必须使用ajax()回调函数之外的json=myData将其作为全局变量,我想知道这是一种好的做法吗?”---OP没有说明它不起作用,OP询问这样做是否是一种好的做法。如果有什么无效的东西,他们会明确地告诉它(至少这是我在提问时所期望的)。它甚至不是有效的JS。@zerkms真的吗?它为我编译。@Katana314好吧,如果你取消注释
json=myData;
它在哪里-它是