2010-12-15 27 views
0

にvb.net文字列をシリアル化して、私は次のコードを持っている問題に直面し、mはやったところ、私に知らせてくださいVBJSON文字列

...

を間違っ

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:ここでI」放火犯dataがnull見せていると、Firefoxでデバッグ中に私はここにdoinのよ何...

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

jQueryの

を使用してAutocomplete.jsを使用してメートル??

編集: Autocomplete.js、この形式でdata「マウス」、「キーボード」を必要とする私はJSONせずにこれをdoinの前は 「を率い」、それは罰金働いていました。

答えて

1

jQuery.parseJSONは、JSON文字列を解析するためのものです。あなたはそれを配列に渡しています。それがクライアントに到達したら、あなたのJavaScriptコードは、次のようになります:Jsondataをmeanson

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

は...一つのエントリは、文字列'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); 
} 

あるいは単に:

+0

function InitAutocomplete() { AutoComplete_Create('<%=txtItem.ClientId %>', [<%=strItems %>].sort()); } 
'JsonConvert.SerializeObject(strItems)' 'に変換されていませんJSON'文字列?? – FosterZ

+0

@Crowder:私は同意しますが、アイテムにこの '''が含まれている場合、スクリプトが終了しているので、JSONを使用しようとしています。 – FosterZ

+0

@FosterZ:出力する文字列が正しくエスケープされていることを確認する必要があります(文字列区切り文字として '' 'を使って文字列を出力しているので、文字列中の' ''にその前にバックスラッシュがあることを保証しなければなりません;また、バックスラッシュの前にバックスラッシュ)。私は 'JsonConvert.SerializeObject'(驚くべきことに)のリファレンスページを見つけることができませんが、あなたの質問の引用符から、上のコードのコメントを参照することができます。 –