0

私はいつも jQuery UI に問題を抱えていましたが、今もそうです。オートコンプリート機能を使用したいので、次のような JSON 応答を返す小さな結果ページを作成しました。

[ { "value": "2", "label": "Baldur's Gate" }, { "value": "3", "label": "Baldur's Gate 2" }, ];

そして私のJSは:

function extractLast(term) {
    //return split( term ).pop();
    var t = term.replace(' ', '%20');
    return t;
}

$('nav#mainMenu input').autocomplete({
    minLength:3,
    source: function(request, response) {
        $.getJSON('/Symfony/web/app_dev.php/search/g/' + extractLast(request['term']), response);
    }
});

ご覧のとおり、これは非常に基本的なものであり、明らかなことを忘れていたと思いますが、それが何であるかはわかりません。何か案は?

4

3 に答える 3

1

戻り値に複数の問題があるようです。そのはず

[ { "value": "2", "label": "Baldur\'s Gate" }, { "value": "3", "label": "Baldur\'s Gate 2" } ]
  1. 'でエスケープする必要があります\'
  2. ,2番目のオブジェクトの後にあり、無効です
  3. ;応答の最後の は削除する必要があります。

jQuery.ajaxjQuery.parseJSONを使用してresponseText. これは、 jQuery.jsファイルの"text json": jQuery.parseJSONコンバーター構成を介して指定されます。

このメソッドに応答を渡すと、失敗します

jQuery.parseJSON('[ { "value": "2", "label": "Baldur's Gate" }, { "value": "3", "label": "Baldur's Gate 2" }, ];')
于 2013-01-30T13:10:38.323 に答える
0

オートコンプリート リストの [ ] の末尾にある , の場合もあります。IEはそれが好きではありません。

于 2013-01-30T14:10:08.290 に答える
0

よし、やっと出来た(;_;)

問題は、jQuery に返されるデータでした。json_encode配列で使用して成功しました。コードは次のとおりです。

$results = $search->getResult();
$tab = array();

foreach($results as $result) {
    $tab[] = array('label' => $result->getName(), 'value' => $result->getName(), 'id' => $result->getID());
}

try {
    return new Response(json_encode($tab));

} catch (\Doctrine\Orm\NoResultException $e) {
    return false;
}
于 2013-01-30T15:10:45.940 に答える