访问另一个文件中的var
是否可以访问另一个文件中的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>
是,当文件加载它是可能的。与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);
}
});
如果你想一个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"}
我会注意到,这个功能有很多更好的实现,比如使用'$ .ajax'来代替,并且返回包含标记的JSON,以便将其插入到'#target'中,并将数据传递到'text'调用中。这比依靠全局名称空间变量来传递最终本地化的信息要简单得多。 – Brian 2014-09-29 13:30:50
我在询问之前已经尝试了您的第一个解决方案,并且它不起作用,当我单击时没有任何内容。第二个选项与ajax,你能举一个例子适用于这种情况?或我在哪里可以找到信息?我知道有点ajax,但不是json – Nrc 2014-09-29 13:31:41
我复制粘贴你的代码在一个新的文件名为extern.json和代码编辑器给我一个错误。这是我第一次使用json。我需要别的吗? – Nrc 2014-09-29 14:12:38
是的,这是可能的。 – melancia 2014-09-29 13:25:54
'EXTERN.HTML'实际上只是一个脚本标记吗?或者在该页面上是否存在实际的HTML标记?因为如果它只是一个带有变量的脚本,你应该真的使用JSON和'ajax()'而不是HTML和'load()'。 'load()'方法会自动加载HTML并将其放入'#target'中。没有必要使用回调函数和jQuery来填充元素的内容。 – Brian 2014-09-29 13:38:27
@Brian:是html,它里面有更多的东西。我只是简化案例来解释这里 – Nrc 2014-09-29 13:40:05