【问题标题】:Request Ajax - I can not manipulate the return [duplicate]请求 Ajax - 我无法操纵返回 [重复]
【发布时间】:2018-11-05 23:40:38
【问题描述】:

大家晚上好,

我有以下 AJAX 申请:

function getJson(url) {
    var json;
    $.ajax({
        type: "POST",
        url: url,
        dataType: "json",
        async: false,
        success: function (data)
        {
            alert(data);
            json= data;
        }
    });
    return json;
}

执行时,它会在 Chrome 的网络选项卡上显示一个 json。但我不能在警报和返回时使用变量数据进行操作。代码有问题吗?

【问题讨论】:

  • 控制台是否有任何错误?您可以尝试使用不同的变量名而不是 json 吗?
  • 是的。 “加载失败:对预检请求的响应未通过访问控制检查:请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'127.0.1.1'。”是关于许可的吗?
  • 您需要在您的服务器上启用CORS(跨域资源共享)。

标签: javascript json ajax return


【解决方案1】:

您误解了异步函数。当 JS 运行该 $.ajax 时,它不会等待它完成就继续执行代码。因此,当您 return json; 时,您将在定义之前将其返回。您将不得不使用嵌套回调、promise 或 async/await 重构代码。这是异步编程新手遇到的常见问题,对学习者来说可能非常令人沮丧。

【讨论】:

  • 不,我定义了 async: false;
  • 我认为 async: false 在 jQ 1.8 之后已被弃用。请尝试我提到的一种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2013-04-23
  • 2011-10-19
  • 2016-03-31
  • 1970-01-01
相关资源
最近更新 更多