Jquery自动完成不工作。不能给数据响应的价值(jQuery.map(data.Data)

问题描述:

我想学习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

我相信你有一些错误,你检查了控制台吗? –

我没有在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

感谢您的帮助兄弟。 –

编辑的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

我认为你不需要添加这个作为答案,这是不同于你的第一个问题。 –