ten*_*our 5 javascript ajax eval
我使用设置全局变量的代码eval不起作用.就好像根本没有调用赋值,但是没有发生脚本错误.
<script type="text/javascript">
$(function() {
setTimeout(function() {
eval('var x = 1;');
alert(x);
}, 0);
});
</script>
<div onclick="alert(x);">Click to see 'x'</div>
Run Code Online (Sandbox Code Playgroud)
当页面加载时,警报显示我的期望; 它确认x = 1.但在那之后,我点击div并得到一个x未定义的javascript错误.如何eval正确添加此变量?
背景:上面的代码是我正在研究的项目中的一个最小复制示例,我们必须在AJAX响应期间执行javascript代码.eval大部分时间都能正常工作,但这会导致问题.
Eval 在本地运行,您正在设置本地变量。
要设置全局变量,请删除var;
<script type="text/javascript">
$(function() {
setTimeout(function() {
eval('x = 1;');
alert(x);
}, 0);
});
</script>
Run Code Online (Sandbox Code Playgroud)
您可以使用从全局范围window.eval()运行eval().这将指定var为变量of window,这是全局变量:附加到的变量window.
......但你真的不应该.eval()沙盒是有原因的.
除非你真的知道自己在做什么并相信你所接受的一切,否则这不是XMLHttpRequest.它是那些鸡/蛋的东西之一:如果你相信代码足以执行它,它应该编程得足够好,window.以开头的全局变量为前缀; 因此,你不应该使用window.eval().
此外,除非你只是试图通过使用更易管理XMLHttpRequest(第一次使用所有内容......)来避免异步头痛,你真的应该创建一个脚本标记,分配它的源代码,并将其作为子代附加到头部或身体标签.动态附加脚本标记甚至比使用XHR更快,特别是对于大脚本.
| 归档时间: |
|
| 查看次数: |
6844 次 |
| 最近记录: |