2017-06-09 3 views
0

Ich kodiere ein jquery Plugin, das als Lade-Link fungiert, der eine Anfrage an einen Server sendet mit GET oder POST jetzt ist die Sache wirklich einfach, aber ich kann es nicht herausfinden, vielleicht ich ' Ich bin müde, hehehehe.

Hier ist mein Code

Plugin Instanziierung:

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

Und der Code, der den Anruf tätigt ist:

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); 
    }); 

Die Sache ist die, dass, wenn die Post zu senden Anfrage Die Parameter werden nicht gesendet, da sie einen Funktionsaufruf enthalten, die Postanforderung wird zugestellt ohne Parameter.

Wenn ich die Params durch ein Objekt wie {provider_id: $('#provider_id').val()} ersetze funktioniert es richtig, aber das Senden von Parametern auf Plugin Instanziierung funktioniert nicht für mich.

Wie werden die Parameter vor dem Senden ausgewertet?

Vielen Dank im Voraus.

+1

Nun, da 'settings.params' eine Funktion ist, wird es als ein Anruf. 'var params = einstellungen.params? settings.params(): null; ' –

Antwort

1

Da Parameter eine Funktion ist, müssen Sie sie aufrufen, um die Werte zu erhalten. In Ihrem Plugin, Ihr Code wie folgt ändern:

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