在一个脚本中创建变量并在另一个脚本中使用。 JQuery的/ HTML / JS

时间:2017-09-02 02:05:49

标签: javascript jquery html

如何将脚本1 Name, Email, Teams的结果转换为我可以在脚本2 中使用的变量?

我正在进行API调用以获取一些JSON然后我想在消息中使用某些值作为文本然后发送到slack。

示例

$('.Name').html(data.user.name); // Returns John
$('.Email').html(data.user.email); // Returns John@John.com
$('.Teams').html(data.user.teams[0].name); // Returns JohnsTeam

var text = 'Hello my name is $Name + my email is $Email + From $Teams'

输出=您好我的名字是约翰我的电子邮件是John@John.com来自JohnsTeam

脚本1

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 = "xxxxxxxxxxxxxxxxxxxxxxxxx";
function myapiRequest(endpoint, options) {
    $.ajax($.extend({}, {
    type: 'GET',
    dataType: "json",
    success: function(data) {
    $('.Name').html(data.user.name);
    $('.Email').html(data.user.email);
    $('.Teams').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

$(document).ready(function(){
    $('#contact-submit').on('click',function(e){
        e.preventDefault();
        var url = 'https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
        var text = 'This is a message'
        $.ajax({
            data: 'payload=' + JSON.stringify({
                "text": text // What I want to dynamically change
            }),
            dataType: 'json',
            processData: false,
            type: 'POST',
            url: url
        });
    });
});

1 个答案:

答案 0 :(得分:1)

一个很好的解决方案是在HTML5 localstorage中设置从响应中获得的变量,如下所示:

  • 内部成功:
success: function(data) {
  localStorage.setItem("urdata",JSON.stringify(data));
}
  • 在另一个脚本中,您可以检索如下数据:
  

var data = localStorage.getItem(" urdata"); data = JSON.parse(data);