2016-11-22 42 views
0

我想學習MVC的jQuery。一切似乎都很好,但自動完成是行不通的。我debbuged它,可能我的成功方法不起作用。幫我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> 

任何幫助或建議表示歡迎。 Thankyou ..

+0

你能解釋一下它more..what不工作?你有沒有檢查控制檯日誌? –

+0

沒有進入成功的方法,但它現在正在進行,但仍然無法正常工作。 –

+0

我相信你有一些錯誤,你檢查了控制檯嗎? –

回答

1

我沒有在jQuery.ajax()http://api.jquery.com/jQuery.ajax/的可用設置列表中看到sucesscallbackfunction。此外,即使回撥正在執行,response回調也不在範圍內。

試試這個:

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

好吧,我現在嘗試了,我得到的數據價值。當我輸入's'時,從數據庫中選擇4個名字,但是我仍然沒有得到用戶界面上顯示的列表。請指導我更多。 –

+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

我認爲你不需要添加這個作爲答案,這是不同於你的第一個問題。 –