0

PHP 配列をビューに渡してから、その配列を使用して jQuery オートコンプリートを作成しようとしています。

foreach ($products as $product)
{               
    $productsArray[] = array('label' => $product->getName()  ,'id' => $product->getId() , 'value' => $product->getUrlSafeName());                           
}

$productsJson = json_encode($productsArray);

$productsJsonビューに渡され、DOM に挿入します。テンプレートエンジンとして Twig を使用しています。

<div id="autocompleteData">{{ productsJson }}</div>

そして私のjQuery:

$( document ).ready(function() {

    var autocompleteData = $('#autocompleteData').text();       

    $('#findoffice_location').autocomplete({ 
         source: autocompleteData,
         change: function (event, ui) {  } });

});

console.log autocompleteData の場合、構造上は JSON オブジェクトのように見えますが、そうではありません。

私が行った場合:

var autocompleteData = [{"label":"Toybox","id":1,"value":"toybox"},{"label":"Shoe","id":2,"value":"shoe"},{"label":"Eggs","id":3,"value":"eggs"}];

次に consolelog 、各 autocompleteData 製品は適切な JSON オブジェクトであり、オートコンプリートは期待どおりに機能します。

4

2 に答える 2

1

.text()の文字列出力を JSONに変換する必要があります。

source: jQuery.parseJSON(autocompleteData)

手動で入力すると、実際の JSON が入力されるため、機能する理由がわかりました。

于 2013-10-02T10:33:03.907 に答える
0

autocompleteData次のように $.parseJON への呼び出しをラップしてみてください。

$( document ).ready(function() {

    var autocompleteData = $('#autocompleteData').text();       

    $('#findoffice_location').autocomplete({ 
        source: $.parseJON(autocompleteData),
        change: function (event, ui) {  } });

});

編集@Georgeは私を打ち負かしました。

于 2013-10-02T10:37:50.533 に答える