我正面临着一个奇怪的问题。 我在我的代码中定义了一个变量,用它来进行调用然后就这样做了。当我试图再次使用它时,稍后,变量被更改 - 可能是序列化的。 我怎样才能以原始形式取回它?
这是我的代码。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title MM-3</title>
<link href="@Url.Content("~/Content/bootstrap.css")" rel="stylesheet" type="text/css" />
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/unobtrusive")
@model IEnumerable<RoboticUI.Models.ResultantRead>
<script src="https://cdn.jsdelivr.net/jquery.ajax.unobtrusive/3.2.4/jquery.unobtrusive-ajax.min.js"></script>
<script src="@Url.Content("~/Scripts/kendo.modernizr.custom.js")"></script>
<script src="~/Scripts/AutocompleteScript.js"></script>
<link rel="stylesheet" type="text/css" href="~/Content/MainRobotFrontier.css?version=1" />
</head>
<body style="font-family:Verdana;">
<div class="container">
<header>
<div class="headerContent">
<p>Robot Gallery</p>
</div>
</header>
<div class="menu-content" style="overflow:auto">
<div class="menu">
@Ajax.ActionLink("Robot", "Robot", "Chart", new AjaxOptions() { UpdateTargetId = "navResult" })
@Ajax.ActionLink("Data", "Data", "Home", new AjaxOptions() { UpdateTargetId = "navResult" })
@Ajax.ActionLink("Client", "Client", "Home", new AjaxOptions() { UpdateTargetId = "navResult" })
</div>
<div id="navResult" class="main">
<h2>Lorum Ipsum</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
</div>
</div>
<footer>Copyright © MMM</footer>
</div>
@RenderBody()
</body>
</html>
当我尝试再次在const restler = require('restler');
var baas_host = 'hostname';
var baas_app = 'appname';
var access_options = {
data: {
grant_type: 'client_credentials',
client_id: 'id',
client_secret: 'secret'
}
}
// Get an access_token
var access_token;
getAccessToken(function (data_token) {
access_token = data_token;
});
function getAccessToken(cb) {
//****Here is where I see different results****//
console.log("access_options::", access_options);
restler.post(baas_host+'/'+baas_app+'/token', access_options).on('complete', function (data, response) {
cb(data.access_token);
});
};
// Refresh if access token expired
function refreshAccessToken() {
console.log("refreshAccessToken called.");
// Call getAccessToken again
getAccessToken(function (data_token) {
access_token = data_token;
});
}
调用中重用access_options
时,以下是我在第二次迭代中看到的作为refreshAccessToken()
的值
access_options
请帮助我了解幕后发生的事情?
答案 0 :(得分:0)
您将access_token声明为模块变量,并通过使每个请求更改它。你需要把他放在一个函数范围内,这样他就会对请求“私有”
答案 1 :(得分:0)
我唯一想到的是restler库正在修改你的对象。尝试使用restler.post之前所需的信息创建一个新对象。类似于access_options_temp