Проблема с сериализацией строки vb.net в строку json - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть следующий код, пожалуйста, дайте мне знать, где я не так ..

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: здесь я использую Autocomplete.js, используя JQuery

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

во время отладки в firefox с помощью firebug data показывает ноль ... Что я здесь делаю ??

Редактировать: Autocomplete.js требуется data в этом формате «мышь», «клавиатура», «светодиод» До того, как я делал это без JSON, все работало нормально.

1 Ответ

1 голос
/ 15 декабря 2010

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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...