如何将数据从fetch(“ URL”)。then()存储到Java脚本中的变量

时间:2019-01-10 10:20:32

标签: javascript jquery json

我正在尝试使用.ready()将数据从url加载到变量中,但是警报框提供了未定义的值,请帮忙。

    let getMasterProd = () => {
        return fetch('url').then(data => data.json());
    }



    $( document ).ready(function() {
        var data =getMasterProd();
        alert(data);
    });

4 个答案:

答案 0 :(得分:2)

“未定义”的原因可能是由于fetch调用的异步性质。如果您真的想提供警报,请尝试在then()内部使用它:

fetch('url').then(function(data){alert(data)});

您还可以使用异步ajax调用来获取数据,但是不建议这样做。如果您可以提供实际情况,那么对我来说将更加方便。或者您可以尝试以前建议的方法:

 let test;
console.log(fetch('url').then(function (data) {
  test = data;
}));
setTimeout(function () {
  alert(test);
}, 500);

有关详细信息,请参见:How do I return the response from an asynchronous call?

答案 1 :(得分:1)

我认为这也应该起作用:

  function $_GET(q, s) {
    s = (s) ? s : window.location.search;
    var re = new RegExp('&' + q + '=([^&]*)', 'i');
    return (s = s.replace(/^\?/, '&').match(re)) ? s = s[1] : s = '';
  }

只需这样命名:

var value = $_GET('myvariable');

答案 2 :(得分:1)

fetch返回Promise而不是数据。

const getMasterProd = () => fetch('url').then(data => data.json());

$(document).ready(() => {
    getMasterProd()
    .then((data) => {
      alert(data);
    });
});

答案 3 :(得分:0)

尝试一下

fetch('url').then(data => { return data.json() });

此外,您应该考虑使用axios。