我正在编写一个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);
});
问题在于,当发送post请求时,params不会被发送,因为它们包含函数调用,post请求是在没有参数的情况下传递的。
如果我用像{provider_id: $('#provider_id').val()}
之类的对象替换params它可以正常工作但是在插件实例化上发送params对我不起作用。
如何在发送之前评估参数?
提前致谢。
答案 0 :(得分:1)
由于params是一个函数,因此您必须调用它来获取值。 在您的插件中,将代码更改为以下内容:
var params = null;
if (settings.params) {
if (typeof settings.params == "function") {
params = settings.params();
}
else {
params = settings.params;
}
}