2010-07-23 6 views
2

Voici mon code:Comment passer javascript objet à travers url

function show() 
{ 
    var parameters = new Object(); 
    parameters.F1MBFC = 'N'; 
    parameters.F1MCSI = 'N'; 
    parameters.F1MMCY = 'N'; 
    parameters.F1NACD = 'B'; 
    parameters.F1RVCR = 'N'; 

    parameters.SOURCEFILED = '_fld:FACILITY7'; 

    showPopWin('http://mysite/popupForm.aspx', 650, 450, null); 
} 

Comment je peux passer comme paramètres dans l'URL les paramètres de l'objet? Des idées?

+0

Voici une solution que j'ai trouvé: http://stackoverflow.com/questions/15399749/embedding-javascript-objects-in-a-pages-url/15399819#15399819 –

Répondre

3

Si vous ouvrez la fenêtre vous fait avec JavaScript, puis:

var win = window.open("foo"); 
win.document.SomeObject = "hello"; 

Puis dans le code pour l'autre page:

alert(document.SomeObject); 

Vous pouvez également accéder à l'appelant (selon le parcourir probablement) via la propriété window.opener. J'ai peut-être quelque chose qui ne va pas, mais vous avez l'idée générale.

0

Vous pouvez le sérialiser et l'ajouter en tant que chaîne à l'URL et le désérialiser avant utilisation.

1

Vous pouvez sérialiser votre objet et le transmettre en tant que paramètre get.

Voici comment sérialiser un objet en JavaScript:

var a = { 
    name: "alexn", 
    age: 20 
}; 

a.toSource(); 

yields "({name:"alexn", age:20})" 

Vous devriez être en mesure d'utiliser les éléments suivants:

showPopWin('http://mysite/popupForm.aspx?parameter=' + parameters.toSource(), 650, 450, null); 
+1

Bien que d'une valeur discutable, il vaut également la peine de noter que cette approche donnerait un vecteur d'attaque significatif pour XSS. J'éviterais de faire ça à tout prix. –

+0

@silky Vous avez absolument raison. La meilleure chose serait probablement de stocker cela dans une sesion. – alexn

0

Comme déjà mentionné, vous pouvez sérialiser l'objet et lire dans la nouvelle page. Mais j'ajouterai simplement que si vous avez le contrôle de la source de la page ouverte, vous pouvez simplement accéder à la fenêtre parent depuis votre nouvelle fenêtre pour obtenir les valeurs souhaitées.

Questions connexes