如何在函数中包装此jQuery调用以便重用它?

时间:2016-12-05 10:16:26

标签: javascript jquery

举个例子,我试图包装一个jQuery AJAX调用以供重用:

function do_ajax(url, data) {
    return $.ajax(url, {
        method: 'GET',
        data: data,
        headers: {
            Authorization: auth_header
        },
        dataType: 'json'
    });
}

do_ajax('/my_url', { stuff: 'here' }).done(function(response) {
    console.log('response');
});

据我了解,这应该有效。为什么不呢?我认为$.ajax本身就是一个函数,因此可以通过我的封闭函数返回。谁能聪明地解释我做错了什么?

1 个答案:

答案 0 :(得分:1)

我怀疑变量auth_header未在您定义do_ajax函数的范围内定义,但它是在您尝试调用do_ajax的范围内定义的。这可以解释为什么$.ajax可以内联工作,但不能通过do_ajax调用。

尝试更改

function do_ajax(url, data) {

function do_ajax(url, data, auth_header) {

并且还要改变

do_ajax('/my_url', { stuff: 'here' }).done(function(response) {

do_ajax('/my_url', { stuff: 'here' }, auth_header).done(function(response) {