在将vb.net字符串序列化为json字符串时遇到问题

时间:2010-12-15 11:00:44

标签: jquery vb.net 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:这里我使用的是使用JQuery的Autocomplete.js

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

在使用firebug data在firefox中调试时显示为null ...我在这里做什么?

修改: Autocomplete.js需要data格式为'mouse','keyboard','led' 在我没有JSON的情况下做这件事之前,它运作良好。

1 个答案:

答案 0 :(得分:1)

jQuery.parseJSON用于解析JSON字符串。你把它交给一个阵列。您的JavaScript代码一旦到达客户端,将看起来像这样:

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

...这意味着Jsondata将是一个包含一个条目的数组,即字符串'mouse','keyboard','led'

如果我理解你在做什么,你根本就不需要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(使用内联VB):

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

甚至只是:

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