2012-07-20 2 views
-3

J'essaye de construire une chaîne de paramètres à envoyer en paramètre à un appel AJAX, mais les différentes façons dont j'ai essayé de construire la chaîne n'ont pas fonctionné, y compris la concaténation simple. Des suggestions pour le faire?JavaScript strings

var partRelationType = checkBox.name; 
var partNumber = checkBox.value; 
var isChecked = checkBox.checked; 

$.ajax({ 
    url: '@Url.Action("SetSelectedPart", "Select", new { customerEstimateKey = ViewBag.CustomerEstimateKey, type = partRelationType, partNumber = partNumber, isSelected = isChecked })', 
    type: "POST", 
    async: true 
}); 
+0

WTH est un « @ Url.Action »? – hugomg

+0

Où est la concentatenation, la plupart de ces valeurs semblent être des variables de différentes sortes, et ils doivent être ajoutés comme 'url: 'somewebadress' + some_variabel + 'morestringadress' + a.different.variable,' – adeneo

+0

Le tag url du La fonction Ajax est censée appeler une autre page sur votre serveur. Si vous voulez passer des paramètres dans la page, vous faites comme ceci: 'url: targetPage.html? MyParameter = myValue'. – Thoross

Répondre

2

L'URL est créée à l'aide du code côté serveur. Vous ne pouvez donc pas utiliser les variables côté client car elles n'existent pas encore.

Utilisez plutôt la propriété data pour les données. Je ne sais pas comment les données sont mis dans l'URL de votre code serveur, mais quelque chose comme cela devrait fonctionner:

$.ajax({ 
    url: '@Url.Action("SetSelectedPart", "Select", new { customerEstimateKey = ViewBag.CustomerEstimateKey })', 
    data: { type: partRelationType, partNumber: partNumber, isSelected: isChecked }, 
    type: "POST", 
    async: true 
}); 
+0

Excellente information. Je vous remercie! – birdus

0

URL doit être une URL comme http://www.blah.com.au/foo.aspx?type=bar&id=22 ou just foo.aspx?type=bar&id=22

Il vous manque des balises côté serveur autour de votre URL.action?

Ou l'analyse syntaxique d'un modèle se convertira-t-elle automagiquement en une URL du format ci-dessus qu'elle doit être?

+0

Il existe une étiquette de serveur. La syntaxe du rasoir utilise juste un @ pour démarrer le bloc de code du serveur, et pas de balise de fin. – Guffa