我有以下代码,请让我知道哪里错了..
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的情况下做这件事之前,它运作良好。
答案 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());
}