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

Javascript $.post,带有基于函数的参数,javascript,jquery,Javascript,Jquery,我正在编写一个jquery插件,它充当一个加载链接,使用GET或POST向服务器发送请求。现在事情真的很基本,但我无法理解,可能我累了,呵呵 这是我的密码 插件实例化: $('#load-products-button').loadingLink({ params: function(){ return { provider_id: $('#provider_id').v

我正在编写一个jquery插件,它充当一个加载链接,使用
GET
POST
向服务器发送请求。现在事情真的很基本,但我无法理解,可能我累了,呵呵

这是我的密码

插件实例化:

$('#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);
     });
进行调用的代码是:

$('#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请求时,参数不被发送,因为它们包含函数调用,post请求在发送时没有参数

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

发送前如何评估参数


提前感谢。

因为params是一个函数,所以必须调用它才能获得值。 在插件中,将代码更改为以下内容:

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

既然
settings.params
是一个函数,就把它当作一个函数来调用<代码>变量参数=设置.params?settings.params():null