Js如何调用函数并从另一个文件传递params

时间:2017-11-27 12:11:53

标签: javascript jquery ajax

我试图在js中创建一个带有某些功能的主文件。 我想从我的ajax调用中的另一个js文件访问geturl函数,以便在我的url中发布。 我确实喜欢这个 Ajax文件:

**<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
<script type="text/javascript">
(() => {
        'use strict'
$.ajax({
            url: getUrl('index','postData'),
            dataType: 'json',
                // query string parameters to append
                data: {
                  id: getId(),
              },
              type: "POST",
              success: (data) => {
                // success! we got the data!
                let card_markup = ''
                data.forEach((post) => {
                    card_markup += card(post);
                })
                $('.js-post').append(card_markup);
            }
        })
})()**

主档

**$( document ).ready(function() {

    'use strict'

    $('.back').click(function() { history.go(-1); });

    function getUrl (ctlr, act) {
        var baseurl = 'http://localhost:5002/';  
        return baseurl+'/'+ctlr+'/'+act;
    }

    function getId ()
    {
        var url = $(location).attr('href');
        var parts = url.split("/");
        var last_part = parts[parts.length-1];
        return last_part;
    }

});**

我收到了这个错误: 24781:143未捕获的ReferenceError:未定义getUrl     在24781:143     在24781:184

这样做的最佳方法是什么? 提前谢谢!

1 个答案:

答案 0 :(得分:3)

你的函数应该在dom ready函数之外,可以在其他JS文件中访问:

// Should be outside dom ready scope
function getUrl (ctlr, act) {
    var baseurl = 'http://localhost:5002/';  
    return baseurl+'/'+ctlr+'/'+act;
}

function getId ()
{
    var url = $(location).attr('href');
    var parts = url.split("/");
    var last_part = parts[parts.length-1];
    return last_part;
}

$( document ).ready(function() { // <--- Start scope of DOM ready

    'use strict'

    $('.back').click(function() { history.go(-1); });

    // function inside here won't be accessible 
});  // <--- End scope of DOM ready

例如:

function test_function() {
   function inner_scope() {
    // some definition
   }
}

inner_scope(); // will give Uncaught ReferenceError

Understanding Javascript Scope将帮助您了解JS中的范围。