2014-09-29 99 views
-1

是否可以訪問另一個文件中的var或函數?在這種情況下,當用戶點擊#linkajax可以得到var test中的內容嗎?我該怎麼做?我想這和它不工作訪問另一個文件中的var

JQUERY AJAX:

$("#linkajax").click(function(){ 
    $("#target").load("extern.html"); 
    $('#target').text(test); 
}); 

INDEX.HTML:

<div id="linkajax">just clic!</div> 
<br> 
<div id="target"></div> 

EXTERN.HTML:

<script type="text/javascript"> 
var test = "test text"; 
</script> 
+0

是的,這是可能的。 – melancia 2014-09-29 13:25:54

+0

'EXTERN.HTML'實際上只是一個腳本標記嗎?或者在該頁面上是否存在實際的HTML標記?因爲如果它只是一個帶有變量的腳本,你應該真的使用JSON和'ajax()'而不是HTML和'load()'。 'load()'方法會自動加載HTML並將其放入'#target'中。沒有必要使用回調函數和jQuery來填充元素的內容。 – Brian 2014-09-29 13:38:27

+0

@Brian:是html,它裏面有更多的東西。我只是簡化案例來解釋這裏 – Nrc 2014-09-29 13:40:05

回答

0

是,當文件加載它是可能的。與jQuery.ajax()嘗試(如果external.html是在同一個域):

jQuery.ajax({ 
    url: "external.html", 
    dataType: "html", 
    success: function (data) { 
     html = jQuery.parseHTML(data, document, true); 
     jQuery("#target").append(html); 
     jQuery("#target").text(test); 
    } 
}); 
+0

我檢查過該文件已加載。我怎樣才能得到var? – Nrc 2014-09-29 13:38:41

+0

@Nrc更新了代碼。 – 2014-09-29 14:00:06

+0

正如我告訴布賴恩我複製粘貼你的代碼的external.json在一個新的文件只有該代碼和代碼編輯器給我一個錯誤 – Nrc 2014-09-29 14:20:19

0

如果你想一個JS變量的結果最終裝入元素,那麼JSON比加載HTML,裏面解析腳本更好的辦法它填充一個全局變量,然後讀取該變量來填充div,從而替換剛加載的HTML。要做到這一點,使用ajax()代替load()像這樣:

$("#linkajax").click(function(){ 
    $("#target").ajax("EXTERN.JSON",{ 
     dataType: 'json', 
     success: function(data) { 
      $('#target').text(data.test); 
     } 
    }); 
}); 

EXTERN.JSON內容是:

{"test":"test text"} 
+0

我會注意到,這個功能有很多更好的實現,比如使用'$ .ajax'來代替,並且返回包含標記的JSON,以便將其插入到'#target'中,並將數據傳遞到'text'調用中。這比依靠全局名稱空間變量來傳遞最終本地化的信息要簡單得多。 – Brian 2014-09-29 13:30:50

+0

我在詢問之前已經嘗試了您的第一個解決方案,並且它不起作用,當我單擊時沒有任何內容。第二個選項與ajax,你能舉一個例子適用於這種情況?或我在哪裏可以找到信息?我知道有點ajax,但不是json – Nrc 2014-09-29 13:31:41

+0

我複製粘貼你的代碼在一個新的文件名爲extern.json和代碼編輯器給我一個錯誤。這是我第一次使用json。我需要別的嗎? – Nrc 2014-09-29 14:12:38

0

我想你想訪問另一個JavaScript文件的某處定義的變量時加載異步。您可以參考POST以供參考。

希望它有幫助..