[英]calling js function in another .js file
在我的AJAX帖子的成功回调函数中,我试图调用另一个JS文件中的函数
page1.html包含:
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="js/page2.js" type="text/javascript"></script>
<script>
$.ajax({
type: 'post',
url: '/dev/new/scripts/search.php',
dataType: 'json',
data: {"search_1":"<?php echo $item1; ?>","search_2":"<?php echo $item2; ?>"},
success: searchResults()
});
</script>
</head>
$.ajax({
type: 'post',
url: '/dev/new/scripts/search.php',
dataType: 'json',
data: {"search_1":"<?php echo $item1; ?>","search_2":"<?php echo $item2; ?>"},
success: searchResults()
});
page2.js包含:
$(document).ready(function() {
function searchResults () {
stuff...
}
});
Firebug给我的错误是:“ ReferenceError:未定义searchResults”
当您将函数作为成功处理程序传递时,需要这样指定:
success: searchResults
不像这样:
success: searchResults()
当您将括号放在其后时,它将指示JS解释器立即调用它。 如果您不将括号放在后面,则它是一个函数引用,以后任何有引用的人都可以调用。
此外, searchResults()
函数是在document.ready处理程序内部本地定义的,并且在该函数之外不可用(它对于您的ready回调是本地的)。 如果希望它在全局范围内可用,以便可以从另一个上下文中调用它,则必须在全局范围内进行定义。
这是因为您已将函数定义放在文档中。 将其放在外面后再试。
您的代码有两个问题:
在page2.js中,仅在DOM准备好后定义函数searchResults
。 但是,这不适用于page1.js中的ajax调用。 这就是为什么当page1查找searchResults
时找不到它。 同样,将ajax调用也包装在$(document).ready()
中,或者从$(document).ready()
中都删除。
success: searchResults()
, searchResults
进行评估,并将其返回值分配给success
,这不是您想要的。 要success: searchResults
改为使用success: searchResults
(不带括号)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.