0

我正在使用jquery-ui自動完成並在自動完成功能內進行ajax調用我打電話給我的控制器操作返回Json,每件事情都很好,但是當我選擇從建議下拉一些東西然後select回調函數調用,並在select回調函數ui是未定義的。Jquery-ui自動完成選擇回調函數工作不正常

的Javascript

function log(message) { 
      $("<div>").text(message).prependTo("#log"); 
      $("#log").scrollTop(0); 
     } 

     $("#search").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "/Home/GetCompanyNames", 
        dataType: "jsonp", 
        data: "searchterm=" + request.term, 
        success: function (data) { 
         response($.map(data, function (item) { 
          alert(item.Value); 
          return { 
           label: item.Name, 
           value: item.Name 
          }; 
         })); 
        } 
       }); 
      }, 
      minLength: 2, 
      select: function (event, ui) { 
       alert(ui.item.Name); 
      alert(ui.item.Value); 
      alert(ui.item.LogoUrl); 
      }, 
      open: function() { 
       $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
      }, 
      close: function() { 
       $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
      } 
     }); 

    }); 

動作控制器:

public JsonResult GetCompanyNames (string searchterm) 
    { 
     var companies = context.companyService.Query().Where(x => x.Name.Contains(searchterm)).ToList(); 
     var list = companies.Select(item => new SearchJsonModel 
               { 
                LogoUrl = item.Logo != null || item.Logo != "" ? "<img src='/Upload/" + item.Logo + "' />" : "<img src='/home/image?image=" + item.Name + "' />", Name = item.Name, Value = item.InternetName 
               }).Select(model => (model)).ToList(); 
     return Json(list, JsonRequestBehavior.AllowGet); 
    } 

SearchJsonModel:

public class SearchJsonModel 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
    public string LogoUrl { get; set; } 
} 

請問我是否需要更多的細節,並提前致謝。

+0

[jQuery的自動完成多輸出(可能重複http://stackoverflow.com/questions/12855617/jquery -autocomplete多輸出) – tpeczek

回答

0

要得到名稱,價值,LogoUrl,請將那些在這樣的迴應:

response($.map(data, function (item) { 
         alert(item.Value); 
         return { 
          label: item.Name, 
          value: item.Name 
          LogoUrl: item.LogoUrl, 
          Name: item.Name 
         };