2015-05-16 110 views
0

索引。 HTML全局变量无法通过ajax加载脚本访问

<script> 
var foo = 1; 
</script> 

HTML页面加载几次到使用AJAX页面:

岗位。 HTML

<script> 
if (foo === 1) 
{ 
// do something 
} 
// Error: foo is not defined 
</script> 

富只是如果浏览器具有AJAX功能,确定的变量。由于脚本通过AJAX加载,这应该意味着浏览器能够生成XMLHTTPRequests。

我宁愿不必更改post.html和index.html的内容。

在post.html加载到index.html之前,有没有办法在post.html中设置foo = 1

(anonymous function) @ VM10881:2 
jQuery.extend.globalEval @ app.js:329 
jQuery.fn.extend.domManip @ app.js:5436 
jQuery.fn.extend.after @ app.js:5245 
verifyPage @ app.js:9319 
completed @ app.js:9289 
onComplete @ app.js:9250 
jQuery.Callbacks.fire @ app.js:3100 
jQuery.Callbacks.self.fireWith @ app.js:3212 
done @ app.js:8265 
jQuery.ajaxTransport.send.callback 
+0

为什么不检查'如果(window.XMLHttpRequest)'? – Johan

+0

@Johan,因为我不得不用window.foo和var foo替换foo和window.foo,我不知道该怎么做。我不是在脚本标记中创建JS的人。必须有一个更简单的方法来做到这一点,我只是不知道如何谷歌搜索。我尝试了“页面上的脚本变量无法在加载的脚本中访问” – ECMAScript

+0

因此,即使'post.html'被动态加载到'index.html',它也不能访问'foo',它在'index.htm'? – Johan

回答

0

尝试这样的事情(从index.htm的):

$.ajax({ 
    url: 'post.htm', 
    dataType: 'html' 
}).done(function(html){ 

    var $html = $(html), 
     script = '<script>var foo=1;</script>'; 

    $html.find('head').prepend(script); 

    $('body').append($html); 
}); 
+0

你知道可能是什么问题?我剥除了除AJAX请求所在页面的正文内容外的所有内容。难道这就是为什么一切都未定义?我应该将网页的头部存储在什么地方?而事情是,我并不试图追加整个HTML页面,我剥离了它的内容(表格),而且这些表格的脚本实际上使用与当前页面的全局变量相同的变量 – ECMAScript

+0

我正在查看这是:http://forums.asp.net/t/1930108.aspx?Script+issues+when+partial+view+is+added+to+page+via+ajax+calls它是相关的吗? – ECMAScript