2016-04-05 14 views
0

私はTypeaheadをかなり新しくしており、コールバックで動作させることはできません。申し訳ありませんが、これは既に尋ねられている場合、私は検索したときに正確な問題を見つけることができません。typeaheadコールバックが動作しない

レコードが文字列を持つ変数からのもので、データベースからのものではない場合、私はTypeaheadを使用していました。コールバックを正しくコーディングする方法がわかりません。

MVC 6を使用していますが、これはtypeahead.js 0.11.1のようです。

var substringMatcher2 = function (records) { 
    return function findMatches(searchString, callback) { 

     $.ajax({ 
      url: "/Test/GetRecords/", 
      cache: false, 
      data: { searchString: searchString }, 
      type: "POST", 
      success: function (data) { 

       callback(data); 
      }, 
      error: function (reponse) { 
       alert("error : " + reponse); 
      } 
     }); 
    }; 
}; 

$('#field2').typeahead({ 
    hint: true, 
    highlight: true, 
    minLength: 3 
}, 
{ 
    name: 'records2', 
    source: substringMatcher2() 
}); 

テスト/ GetRecordsを正しくするsearchStringに基づいてフィルタリングたレコード(文字列のリスト)を返しますが、何も上に表示されません:

var records = [ "Alabama", "Alaska", "Arizona" . . .]; 

var substringMatcher1 = function (records) { 
    return function findMatches(searchString, callback) { 

     var matches, substringRegex; 
     matches = []; 
     substrRegex = new RegExp(searchString, 'i'); 

     $.each(records, function (index, record) { 
      if (substrRegex.test(record)) { 
       matches.push(record); 
      } 
     }); 

     callback(matches); 
    }; 
}; 

$('#field1').typeahead({ 
    hint: true, 
    highlight: true, 
    minLength: 3 
}, 
{ 
    name: 'records', 
    source: substringMatcher1(records) 
}); 

は何を動作しません。どのような作品

ページ。私はデバッグし、データは正しく入力されています。 searchStringが "new"の場合、データは[New Jersey、New York、...]

私は何が欠けていますか?そして、このシナリオは動作可能ですか?

ご協力いただきますようお願い申し上げます。

ありがとうございます!

+0

http://stackoverflow.com/questions/27347121/update-json-on-every-keyup-for-twitter-typeahead – guest271314

+0

guest271314を参照してください。リンクのおかげで。私はほとんどの答えを見て、それは私が似たようなことをしているようだ、なぜ私は実際にそれが動作していない正確には分からない。あなたは、私があなたに役立つと思う特定の答えを教えてもらえますか? –

+1

http://stackoverflow.com/a/27349494/ – guest271314

答えて

2

これは、それが他の誰かに役立ちます場合には、それは、私のために働く作られた更新されたコードです:

var substringMatcher2 = function (records) { 
return function findMatches(searchString, processSync, processAsync) { 

    $.ajax({ 
     url: "/Test/GetRecords/", 
     cache: false, 
     data: { searchString: searchString }, 
     type: "POST", 
     success: function (data) { 

      processAsync(data); 
     }, 
     error: function (reponse) { 
      alert("error : " + reponse); 
     } 
    }); 
}; 

を};

関連する問題