2013-08-22 5 views
2

J'ai plusieurs (100s) de fichiers Javascript qui utilisent un fichier js commun avec une fonction standard pour charger essentiellement la réponse d'un fichier aspx dans un DIV sur une page. Cependant (et cela est probablement évident), la partie données de la fonction JQuery load(URL, data, callback) a quelques variables définies mais je veux aussi pouvoir gérer les variables inconnues passées à la fonction.Transmettre des variables inconnues à Load()

La fonction est la suivante (couper un peu, car il y a beaucoup de champs de formulaire)

function global_submitform(DIV_ID,ADDITIONAL_FIELDS) 
{ 
    $("#"+DIV_ID).load("functions.aspx?process=processform", 
    { 
    USERID, $("#userid").val(), 
    NAME, $("#name").val(), 
    PHONE, $("#phone").val() 
    }, 
    function(response,status,xhr){if (status=="error"){$(#"+DIV_ID).html(xhr.status+" "+ xhr.statusText);}}); 

Cela fonctionne très bien pour les fichiers js appeler, mais je ne sais pas comment je pourrais ajouter processus le ADDITIONAL_FIELDS passthough. Il serait ajouté après $("#phone").val() mais j'obtiens des erreurs si j'essaie quelque chose comme eval(ADDITIONAL_FIELDS) car le script n'est plus valide. Je pourrais potentiellement juste ajouter les variables inconnues supplémentaires à la partie url mais certaines des valeurs pourraient être très grandes. Est-ce possible ou dois-je envisager une autre façon de le faire?

+0

Avez-vous essayé $ .extend? – jvverde

+0

Est-ce que 'ADDITIONAL_FIELDS' est un objet? –

Répondre

1

Vous ne montrez pas ce que vous passez pour ADDITIONAL_FIELDS, mais je suppose que c'est un hachage.

Je vais également transformer le paramètre data en un hachage normalement écrit.

En supposant que vous appelez:

global_submitform('thediv', { "foo": 1, "bar": 2 }); 

vous voudriez combiner les avec vos valeurs "permanentes":

function global_submitform(DIV_ID,ADDITIONAL_FIELDS) 
{ 
    var fields = ADDITIONAL_FIELDS || {}; // maybe nothing was passed 
    $.extend(fields, 
    { 
     USERID: $("#userid").val(), 
     NAME: $("#name").val(), 
     PHONE: $("#phone").val() 
    } 
); 

    // in our example, "fields" now contains the foo, bar, USERID, 
    // NAME and PHONE members 

    $("#"+DIV_ID).load("functions.aspx?process=processform", 
    fields, 
    function(response,status,xhr){if (status=="error"){$(#"+DIV_ID).html(xhr.status+" "+ xhr.statusText);}}); 
} 

Notez que vous pouvez aussi simplement appeler:

global_submitform('thediv'); 

si vous n'avez pas de paramètres supplémentaires.

Questions connexes