2015-05-26 6 views
0

Я возвращаю массив строк из контроллера в ajax-вызов. пытаясь установить в текстовое поле эти значения. в текстовом поле он не заполняется. но я вижу данные в методе успеха.jQuery autocomplete for json data

[HttpGet] 
    [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
    public JsonResult GetWorkNamesAutoPoplate(string companyName) 
    { 
     ... 
     var newKeys = companyNameslst.Select(x => new string[] { x }).ToArray(); 

     var json = JsonConvert.SerializeObject(newKeys); 
     return Json(json, JsonRequestBehavior.AllowGet); 
    } 

JS

$(document).on('change', '[name="FindCompanyName"]', function() { 
    $('[name="FindCompanyName"]').autocomplete({   
     source: function (request, response) {   
      $.ajax({ 
       url: "GetWorkNamesAutoPoplate", 
       type: "GET", 
       dataType: "json", 
       data: { companyName: $('[name="FindCompanyName"]').val() }, 
       success: function (data) { 
        alert(JSON.stringify(data)); 
        response($.map(data, function(item) { 
         console.log(item); 
         return { 
          value: item 
         } 
        }));  
       } 
      }); 
     }, 
     messages: { 
      noResults: "", results: "" 
     }  
    }); 
}); 

alert(JSON.stringify(data)); дисплей, как это. enter image description here

Как заполнить эти данные в текстовом поле

+1

Посмотрите на это .http: //stackoverflow.com/questions/27578169/jqueryu-ui-autocomplete-not-working-with-asp-net/27578198#27578198 – Mairaj

ответ

0

Возвращаемый тип ваш json is массив массивов, я думаю, вы должны вернуть его как массив

var newKeys = companyNameslst.ToArray(); 

также, ваши данные сериализовать дважды,

один из линии,

var json = JsonConvert.SerializeObject(newKeys); 

и второй раз из фильтра JsonResult действия

return Json(json, JsonRequestBehavior.AllowGet); 

отправки данных JSON как,

return Json(newKeys, JsonRequestBehavior.AllowGet); 

вместо

var json = JsonConvert.SerializeObject(newKeys); 
return Json(json, JsonRequestBehavior.AllowGet); 

должен работать.

надеюсь, что это поможет.