在我的 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 is not defined”
最佳答案
当你传递一个函数作为成功处理程序时,它需要像这样指定:
success: searchResults
不是这样的:
success: searchResults()
当你在它后面加上括号时,它会指示 JS 解释器现在调用它。当您不在它后面放置括号时,它是一个函数引用,以后任何人都可以调用该引用。
此外,searchResults()
函数是在您的 document.ready 处理程序中本地定义的,并且在该函数之外不可用(它在您的就绪回调中是本地的)。如果您希望它在全局范围内可用,以便您可以从另一个上下文中调用它,则必须在全局范围内定义它。
关于javascript - 在另一个 .js 文件中调用 js 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368150/