2015-05-16 108 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