2017-09-02 39 views
0

我有下面的脚本在运行时进行API调用来检索一些JSON。它工作,我很满意什么返回。打开JSON响应转换成变量 - jQuery的/ JavaScript的

我的问题是,我不知道如何把什么返回到全局变量,我可以在我的项目中使用。

为了进一步解释,我拨打电话,并返回一些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) 
    }) 

回答

0

首先,定义变量:VAR ABC = NULL; 在你的成功的功能,试试这个:ABC = data.user.email;

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); 

希望这有助于!