2014-09-29 65 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以供参考。

希望它有帮助..