2016-11-22 7 views
0

MVCでjQueryを学びたいと思っていますが、すべてがうまくいくようですが、オートコンプリートは機能していません。私を助けてJqueryのオートコンプリートが機能しません。データレスポンスに価値を与えることができません(jQuery.map(data.Data)

私のコントローラコード: - 。

public ActionResult GetName(string term) 
     { 

      AjaxResponse objAjaxResponse = new AjaxResponse(); 

      List<AutoCompleteModel> objData = masterRepository.getAutoComplete(term); 

      objAjaxResponse.Status = AjaxResponseStatusCodes.Ok; 
      objAjaxResponse.Message = "Autocom"; 
      objAjaxResponse.Data = objData; 
      return Json(objAjaxResponse); 
     } 

リポジトリコード: -

public List<AutoCompleteModel> getAutoComplete(string MyName) 
     { 
      List<AutoCompleteModel> adasd = new List<AutoCompleteModel>(); 
      //adasd = this.DB.ExecuteSprocAccessor<AutoCompleteModel>("dbo.[getNameByName]",MyName).ToList(); 

      using (IDataReader IReader = this.DB.ExecuteReader("dbo.getNameByName", MyName)) 
      { 
       MapListRecord<AutoCompleteModel>(IReader, adasd); 
       //MapRecord(IReader, adasd); 
       IReader.NextResult(); 
      } 

      return adasd; 
     } 

のjQuery: -

jQuery(document).ready(function() { 
jQuery("#MyName").keyup(function() { 
     BindAutoCompleteGrid(); 
    }); 

}); 

function BindAutoCompleteGrid() { 
    jQuery("#MyName").autocomplete({ 
     //minLength: options.minLength == undefined ? 1 : options.minLength, 
     source: function (request, response) { 
      jQuery.ajax({ 
       type: 'POST', 
       url: GetNameUrl, 
       data: { term : request.term },     
       //data: options.data == undefined ? { "term": jQuery(options.textObject).val() } : options.data, 
       dataType: "json", 
       cache: false, 
       global: false, 
       responseType: "json", 
       sucesscallbackfunction: 'onSucessGetName' 

      }); 
      } 
      }); 
} 

function onSucessGetName(data, response) { 
    response(jQuery.map(data.Data, function (item) { 
     return { 
      label: item["Value"], 
      name: item["Name"] 
     } 
    })); 
} 

テキストボックス: -

<div> 
    @Html.TextBoxFor(m => m.MyName, new { @id="MyName",@name="MyName", @class="txtCustDetails"}) 
</div> 

すべてのヘルプや提案は大歓迎です。ありがとうございました..

+0

はこれを試してみてください?コンソールログをチェックしましたか? –

+0

は成功のメソッドに到達していませんでしたが、現在は動作していますがまだ動作していません。 –

+0

何かエラーがあると思いますが、コンソールでチェックしましたか? –

答えて

1

jQuery.ajax()の利用可能な設定の一覧にsucesscallbackfunctionが表示されません。http://api.jquery.com/jQuery.ajax/です。また、コールバックが実行されていても、responseコールバックは有効範囲に含まれません。あなたが働いていないmore..whatそれを説明することができ

function BindAutoCompleteGrid() { 
    jQuery("#MyName").autocomplete({ 
    source: function(request, response) { 
     jQuery.ajax({ 
     //... 
     //sucesscallbackfunction: 'onSucessGetName' // remove 
     }).done(function(data) { 
     response(jQuery.map(data.Data, function(item) { 
      return { 
      label: item["Value"], 
      name: item["Name"] 
      } 
     })); 
     }); 
    } 
    }); 
} 
+0

さて、データでValueを得ています。私が 's'と入力すると4つの名前がデータベースから取得されますが、UIに表示されたリストはまだ取得されません。私をもっと案内してください。 –

+0

助けてくれてありがとう。 –

0

編集jQueryの

jQuery(document).ready(function() { 
jQuery("#MyName").autocomplete({ 
    source: function (request, response) { 
      jQuery.ajax({ 
       type: 'POST', 
       url: GetNameUrl, 
       data: { term: request.term}, 
       dataType: "json", 
       cache: false, 
       global: false, 
       responseType: "json", 
       success : (function (data) { 

        response(jQuery.map(data.Data, function (item) { 
         return { 
          label: item.MyName 
          // name: item["MyName"] 
         } 
         // jQuery("#MyName").val(item["value"]) 
        })) 

       }) 
      }) 
     } 
    }) 
}); 
+0

私はこれを答えとして追加する必要はないと思います。これはあなたの最初の質問とは異なります。 –

関連する問題