将JSON响应转换为变量 - Jquery / Javascript

时间:2017-09-02 12:12:00

标签: javascript jquery

我有下面的脚本,在运行时进行API调用以检索一些JSON。它很有效,我很高兴回来了。

我的问题是,我不知道如何将返回的内容转换为我可以在整个项目中使用的全局变量。

为了进一步解释,我进行了调用并返回了一些JSON。 NAME, EMAIL, ADDRESS

然后我想运行另一个可以使用这些变量的脚本。谁能举个例子呢?

   $('.Name').html(data.user.name);
    $('.Email').html(data.user.email);
    $('.Address').html(data.user.teams[0].name);

脚本

  function currentUrl() {
      return new Promise(function (resolve) {
        chrome.tabs.query({
          active: true,
          currentWindow: true
        }, function(tabs) {
          resolve(tabs[0].url)
        })
      })
    }
    function userIdfromUrl(url) {
      var parts = url.split('/')
      return parts[parts.length - 1]
    }
    var authorizationToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    function myapiRequest(endpoint, options) {
        $.ajax($.extend({}, {
        type: 'GET',
        dataType: "json",
        success: function(data) {
        $('.Name').html(data.user.name);
        $('.Email').html(data.user.email);
        $('.Address').html(data.user.teams[0].name);
    },
        url: "https://api.myapi.com/" + endpoint,
        headers: {
          "Authorization": "Token token=" + authorizationToken,
          "Accept": "application/vnd.myapi+json;version=2"
        }
      },
      options));
    }
    currentUrl()
      .then(function (url) {
        return userIdfromUrl(url)
      })
      .then(function (userId) {
        return myapiRequest('users/' + userId + '?include%5B%5D=contact_methods&include%5B%5D=teams')
      })
      .then(function (data) {
        console.log(data.user.name)
        console.log(data.user.email)
        console.log(data.user.teams[0].name)
    })

2 个答案:

答案 0 :(得分:0)

首先,定义你的变量:var abc = null; 在您的成功函数中,请尝试以下操作:abc = data.user.email;

答案 1 :(得分:0)

您需要定义全局变量,因为您将其传递给回调函数或在回调函数中将其分配给全局变量。

var userName;
var userEmail;
var userTeamName;

然后回应

.then(function(data) {
            userName = data.user.name;
            userEmail = data.user.email;
            userTeamName = data.user.teams[0].name;
        }

然后在你的html标记中:

$('.Name').html(userName);
$('.Email').html(userEmail);
$('.Address').html(userTeamName);

希望这有帮助!