3

Twitter のTypeahed.jsライブラリを使用して、単一の入力ボックスからデータベース内の複数のデータセットを検索しています。

現在、6 つのデータセットを使用しており (以下のコードを参照)、さらに 1 つ追加したいと考えています。products dataset7番目のデータセット(以下のコードから)では機能しないことがわかりました。検索クエリを入力ボックスに入力すると、最初の 6 つのデータセットに対して GET AJAX 要求のみが送信され、7 番目のデータセットは無視されますか?

GET http://127.0.0.1/app/typeahead_orders.json?q=MSI-20mA
GET http://127.0.0.1/app/typeahead_invoices.json?q=MSI-20mA
GET http://127.0.0.1/app/typeahead_services.json?q=MSI-20mA%
GET http://127.0.0.1/app/typeahead_serials.json?q=MSI-20mA%
GET http://127.0.0.1/app/typeahead_users.json?q=MSI-20mA%
GET http://127.0.0.1/app/typeahead_licenses.json?q=MSI-20mA%

ライブラリのドキュメントは充実しており、使用できるデータセットの数に制限があるとは言及していません...

$('#search-query').typeahead([
    {
        name: 'orders',
        remote: base_url+"utilities/ajaxprocess/typeahead_orders.json?q=%QUERY",
        template: '<a href="'+base_url+'orders/view/{{order_id}}">{{value}} - Reference no.: {{reference_number}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-shopping-cart"></i> Orders</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'invoices',
        remote: base_url+"utilities/ajaxprocess/typeahead_invoices.json?q=%QUERY",
        template: '<a href="'+base_url+'invoices/view/{{invoice_id}}">{{invoice_number}} - {{company}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-file"></i> Invoices</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'services',
        remote: base_url+"utilities/ajaxprocess/typeahead_services.json?q=%QUERY%",
        template: '<a href="'+base_url+'services/view/{{rma_id}}">{{value}} - {{firstname}} {{lastname}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-wrench"></i> RMA services</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'serials',
        remote: base_url+"utilities/ajaxprocess/typeahead_serials.json?q=%QUERY%",
        template: '<a href="'+base_url+'serials/view/{{serial_id}}">{{value}} - {{product}} {{module_name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-barcode"></i> Serials</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'users',
        remote: base_url+"utilities/ajaxprocess/typeahead_users.json?q=%QUERY%",
        template: '<a href="'+base_url+'users?f=1&filter_id={{user_id}}">{{firstname}} {{lastname}} - {{email}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-user"></i> Users</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'licenses',
        remote: base_url+"utilities/ajaxprocess/typeahead_licenses.json?q=%QUERY%",
        template: '<a href="'+base_url+'licenses?f=1&filter_id={{license_id}}">{{key}} - {{version}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-lock"></i> Licenses</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'products',
        remote: base_url+"utilities/ajaxprocess/typeahead_products.json?q=%QUERY%",
        template: '<a href="'+base_url+'products?f=1&filter_id={{product_id}}">{{code}} - {{name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-briefcase"></i> Products</h5>',
        engine: Hogan,
        limit: 6
    }
]).on('typeahead:selected', function($e, data) {
    window.location = data.url;
});
4

4 に答える 4

2

わかりました。制限はありませんが、デフォルトの最大並列リクエストは 6 です。typeahead.js ドキュメントから:

maxParallelRequests – The max number of parallel requests typeahead.js can have pending. Defaults to 6.

だから私はこれを増やしました、そしてそれはうまくいきます。最終的に修正されたコードは次のとおりです。

$('#search-query').typeahead([
    {
        name: 'orders',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_orders.json?q=%QUERY",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'orders/view/{{order_id}}">{{value}} - Reference no.: {{reference_number}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-shopping-cart"></i> Orders</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'invoices',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_invoices.json?q=%QUERY",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'invoices/view/{{invoice_id}}">{{invoice_number}} - {{company}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-file"></i> Invoices</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'services',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_services.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'services/view/{{rma_id}}">{{value}} - {{firstname}} {{lastname}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-wrench"></i> RMA services</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'serials',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_serials.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'serials/view/{{serial_id}}">{{value}} - {{product}} {{module_name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-barcode"></i> Serials</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'users',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_users.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'users?f=1&filter_id={{user_id}}">{{firstname}} {{lastname}} - {{email}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-user"></i> Users</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'licenses',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_licenses.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'licenses?f=1&filter_id={{license_id}}">{{key}} - {{version}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-lock"></i> Licenses</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'products',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_products.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'products?f=1&filter_id={{product_id}}">{{code}} - {{name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-briefcase"></i> Products</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'tasks',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_tasks.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'tasks?f=1&filter_id={{task_id}}">#{{task_id}} - {{description}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-briefcase"></i> Tasks</h5>',
        engine: Hogan,
        limit: 6
    }
]).on('typeahead:selected', function($e, data) {
    window.location = data.url;
});
于 2013-11-13T18:56:55.323 に答える
0

Twitter の typehead.js ファイルを開きます。

検索: 「maxPendingRequests = 6」

6 の代わりに、必要な値を入力してください。

6 つ以上のリクエストが並行して実行されていることがわかります。

それは私にとってはうまくいきます。

「maxParallelRequests」プロパティを使用しないでください。まったく機能しません...

私はそれが最終的な解決策だと確信しています.....

于 2016-04-27T16:28:01.010 に答える