2009-07-28 4 views
0

を解釈する私は、検索ボックスにユーザー情報を表示するために、私はかなり、次のparse関数の構文の意味を把握することはできませんjQueryのAutocompleteプラグインを使用します。どのようにjQueryのオートコンプリートプラグインのparse関数の構文

$("#UserSearchBox").autocomplete('FindUser.ashx', 
{ 
    minChars: 2, 
    width: 400, 
    max: 5, 
    parse: function(data) 
    { 
    return $.map(eval(data), function(row) 
    { 
     return { 
     data: row, 
     value: row.UserID, 
     result: "" 
    } 
    }); 
}, 
formatItem: function(item) 
{ 
    return FormatUser(item); 
}); 

プラグインが正常に動作します:それはHTTPハンドラからユーザ情報のJSONifiedの配列を取得し、表示がFormatUser機能の助けを借りて、値をフォーマットされたが、私は本当に、次のコードが何を知りたいのですが(私はちょうどコピーサンプルから調整してユーザオブジェクトに合わせて調整します)。

また、2番目のリターンの開始ブレースはreturnステートメントと同じ行になければならないのはなぜですか?私はこれにコードを変更した場合:

return $.map(eval(data), function(row) 
{ 
    return 
    { 
    data: row, 
    value: row.UserID, 
    result: "" 
    } 
}); 

を私は無効なラベルデータに関するエラーを取得します。何か案は?ありがとう。

答えて

2

JavaScriptは自動セミコロンを挿入するためです。あなたは 'リターン' と同じライン上に開くブレースを必要とする理由だ

function test() 
{ 
    int i = 5; 


    return; //automatic semicolon insertion by JavaScript the code below is dead code. 
    { 
     output : i 
    }; 
} 

チェックhttps://stackoverflow.com/questions/1188551/common-programming-mistakes-for-javascript-developers-to-avoid/1188800#1188800

あなたは

function test() 
{ 
    int i = 5; 


    return 
    { 
     output : i 
    }; 
} 

のようなコードがある場合はそれがあると解釈されるに。

+0

ありがとうございました。それを知らなかった。私の最初の質問では、コードは3つのプロパティ(データ、値、結果)を持つオブジェクトを返すと仮定します。 –

+0

はい、正しいです。 mapメソッドに渡される無名関数は、3つのプロパティを持つオブジェクトを返します。 – SolutionYogi

1

JavaScriptには、このようなことを引き起こすセミコロンに関する構文規則がいくつかあります。行末にセミコロンを置くことができれば、セミコロンを置くことができます。これは、あなたがそれらのすべての種類の場所を置くことを忘れることができるものです。また、リターンを単独で使用できるため、このようなことが起こります。

パーサはこれを見ている:

return $.map(eval(data), function(row) 
{ 
    return ; 
    { 
    data: row, 
    value: row.UserID, 
    result: "" 
    } 
}); 
+0

ありがとうございます。それを知らなかった。 –

関連する問題