带有基于函数的参数的$ .post

时间:2017-06-09 19:42:15

标签: javascript jquery

我正在编写一个jquery插件,它充当一个加载链接,使用GETPOST向服务器发送请求现在这个东西真的很基本,但我无法弄明白,也许我累了,呵呵呵呵。

这是我的代码

插件实例化:

$('#load-products-button').loadingLink({
    params: function(){
                return {                        
                   provider_id: $('#provider_id').val()
                }
    },
    method: 'post',
    success: function(res){
         alert('ok');
    }
});

拨打电话的代码是:

var params = settings.params ? settings.params : null;

$[settings.method](url, params)
     .success(function() {
       settings.success.apply(this, arguments);
     })
     .fail(function() {
       settings.error.apply(this, arguments);
     })
     .complete(function() {
       //remove the loading html
       link.html(currentHtml);
     });

问题在于,当发送post请求时,params不会被发送,因为它们包含函数调用,post请求是在没有参数的情况下传递的。

如果我用像{provider_id: $('#provider_id').val()}之类的对象替换params它可以正常工作但是在插件实例化上发送params对我不起作用。

如何在发送之前评估参数?

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于params是一个函数,因此您必须调用它来获取值。 在您的插件中,将代码更改为以下内容:

var params = null;
if (settings.params) {
    if (typeof settings.params == "function") {
        params = settings.params();
    }
    else {
        params = settings.params;
    }
}