javascript - 在另一个 .js 文件中调用 js 函数

标签 javascript jquery ajax

在我的 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/

相关文章:

javascript - 在 Canvas 中为草制作动画的有效方法

javascript - AngularJS:将 Factory 变量绑定(bind)到 $scope 或指令的 "best"方法?

php - 异步返回的附加属性 :false using jQuery

jquery - jquery绑定(bind)点击和<a>标签onclick之间的性能

javascript - Internet Explorer、ColdFusion 和 Ajax

javascript - 将 Python 翻译成 JavaScript——列表?

javascript - 请求自己的 API 端点

php - JQuery - 将 HTML 加载到文本区域

javascript - jQuery序列化数据和PHP $ _POST不匹配

jquery - 使用 jQuery 验证和 MVC 验证 ajax 中加载的表单