2010-07-20 7 views
1

J'ai le code JQuery suivant, qui fonctionne correctement si le VendorDropDown.ClientID est un entier, ou une chaîne qui peut être convertie en entier, mais qui se casse si j'essaie d'utiliser une chaîne valeur comme "Microsoft". La fonction PopulateSoftware est une WebMethod Asp.Net qui prend un paramètre de chaîne nommé vendorId.Passer des variables alphanumériques à JQuery Ajax

var pageUrl = '<%=ResolveUrl("~/Default.aspx")%>' 
function PopulateSoftwareDropdown() { 
    alert('{vendorId: ' + $('#<%=VendorDropDown.ClientID%>').val() + '}'); 
    $.ajax({  
     type: "POST", 
     url: pageUrl + '/PopulateSoftware', 
     data: '{vendorId: ' + $('#<%=VendorDropDown.ClientID%>').val() + '}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSoftwarePopulated, 
     failure: function (response) { 
      alert(response.d); 
     } 
    }); 
} 
+0

essayer de faire la valeur dropdownlist JSON conviviale pour chaîne de type et de mettre des guillemets autour de la valeur. – gehsekky

Répondre

0

Utilisez

data: '{vendorId: \'' + $('#<%=VendorDropDown.ClientID%>').val() + '\'}' 

ce sera effectivement envelopper la valeur avec des guillemets simples, ce qui signifie qu'il est une valeur de chaîne ..


plus correctement, il devrait être

data: {'vendorId': $('#<%=VendorDropDown.ClientID%>').val() } 

Ceci passera comme données l'objet que nous créons (la {..} partie), qui sera converti par jquery au format correct (chaîne)

+1

Il * devrait * être des guillemets vraiment, comme ceci: ''{" vendorId ":"' + $ ('# <% = VendorDropDown.ClientID%>'). Val() + '"}' 'dans la pratique, l'un ou l'autre fonctionnera, mais il vaut mieux être prudent. –

+0

@Nick, je pense que l'ensemble des données ne devrait pas être une chaîne du tout, mais la clé et la valeur devraient être, en effet .. (* la valeur étant automatiquement convertie puisque les données passées sont un objet réel maintenant .. *) –

Questions connexes