wil*_*ing 7 html javascript server-side client-side hidden-field
在过去的几年里,我总是使用客户端隐藏<input>字段来存储服务器端值并在Javascript域中使用它.
例如,假设我需要从我的应用配置中获取Ajax超时值.
我可能会在我的JSP中存储它:
<input type="hidden" id="ajaxTimeout" value="${serverValue}" />
然后使用它像我的AJAX调用住在外部文件中:
$("#ajaxTimeout").val()
Run Code Online (Sandbox Code Playgroud)
我今天正在讨论这个问题,并建议最好的做法是存储仅在HTML <meta>标记中由Javascript使用的值.
这有关系吗?有没有一种首选的方法来获取仅用于Javascript的服务器端信息?
我的理解是,如果隐藏的输入字段不是表单的一部分,那么用它来存储值是安全的,因为它不会附加到任何请求.话虽如此,我一直认为这确实是一个黑客攻击.
思考?
::编辑::
两个梦幻般的答案:
我们个人会做这样的事情:
var options = {
selector: '#divId',
serverSideVariableHere: <%=AspNetProperty %>,
anotherServerSideVariableHere: <%=AspNetPropertyTwo %>
}
var viewModel = new KnockoutViewModel(options);
ko.applyBindings(viewModel, $(options.selector)[0]);
Run Code Online (Sandbox Code Playgroud)
这只是一个使用 KnockOut JS 的示例,但这个想法可以扩展到您选择使用(或不使用;)的任何 JavaScript 库
然后,我们将这些选项传递给任何使用它们的地方,例如 Knockout ViewModels 或其他。这样我们的 JavaScript 仍然是可测试的,我们可以将任何我们想要的值传递给我们的测试。