2010-12-15 44 views
0

j'ai le code suivant, s'il vous plaît laissez-moi savoir où m goin' mal ..problème dans sérialisation une chaîne de vb.net à une chaîne JSON

VB

For Each dr As DataRow In dvItems.Table.Rows 
    strItems &= "'" & dr("ItemTitle") & "'," 
Next 
strItems = strItems.Trim(",") // before serialize strItems contains 'mouse','keyboard','led' 
strItems = JsonConvert.SerializeObject(strItems) // after serialize strItems contains "'mouse','keyboad','led'" 

JavaScript: Ici, i » m à l'aide Autocomplete.js à l'aide montre nulle ... JQuery

function InitAutocomplete() 
{ 
    var Jsondata = [<%=strItems %>].sort(); 
    data = jQuery.parseJSON(Jsondata); 
    AutoComplete_Create('<%=txtItem.ClientId %>', data); 
} 

pendant le débogage dans Firefox avec firebug data Qu'est-ce que je fais ici ??

Edit: Autocomplete.js a besoin data dans ce format 'souris', 'clavier', 'conduit' Avant que je ne doin cela sans JSON, il fonctionnait très bien.

Répondre

1

jQuery.parseJSON est pour l'analyse des chaînes JSON. Vous lui donnez un tableau. Votre code JavaScript, une fois qu'il est au client, ressemblera à quelque chose comme ceci:

function InitAutocomplete() 
{ 
    var Jsondata = ["'mouse','keyboad','led'"].sort(); 
    data = jQuery.parseJSON(Jsondata); 
    AutoComplete_Create('someid', data); 
} 

... qui meanson Jsondata sera un tableau avec une entrée, la chaîne 'mouse','keyboard','led'.

Si je comprends ce que vous faites, vous n'avez pas du tout besoin de JSON.

VB:

strItems = "" 
For Each dr As DataRow In dvItems.Table.Rows 
    ' Use JsonConvert.SerializeObject to quote and escape the 
    ' string; even though we're not actually using JSON, it 
    ' gives us a valid, properly-escaped JavaScript string 
    ' literal. 
    strItems &= JsonConvert.SerializeObject(dr("ItemTitle")) & "," 
Next 
strItems = strItems.Trim(",") 

JavaScript (avec VB en ligne):

function InitAutocomplete() 
{ 
    var data = [<%=strItems %>].sort(); 
    AutoComplete_Create('<%=txtItem.ClientId %>', data); 
} 

ou même simplement:

function InitAutocomplete() 
{ 
    AutoComplete_Create('<%=txtItem.ClientId %>', 
         [<%=strItems %>].sort()); 
} 
+0

'JsonConvert.SerializeObject (strItems)' est pas convertir à ' JSON' chaîne ?? – FosterZ

+0

@Crowder: je suis d'accord, mais si les éléments contiennent ce '']' alors mon script se termine, c'est pourquoi j'essaye d'utiliser JSON – FosterZ

+0

@FosterZ: Bien, vous devez être sûr que toutes les chaînes que vous produisez sont correctement échappées (puisque vous éditez des chaînes en utilisant '' 'comme délimiteur de chaîne, vous devez vous assurer que tout' '' dans la chaîne a une barre oblique inverse devant elle, vous devez également vous assurer que toute barre oblique inverse est précédée d'une barre oblique inverse.). Je ne trouve pas de page de référence pour "JsonConvert.SerializeObject" (de manière surprenante), mais à partir des guillemets de votre question, il pourrait bien être utile - voir le commentaire dans le code ci-dessus. –