2015-09-28 3 views
1

У меня есть WebMethod на моей странице asp.net, которая возвращает строку, представляющую массив JSON, содержащий данные, которые я хочу использовать в качестве источника для текстового поля jquery-ui autocomplete.Заполнение автозаполнения jquery с данными asp WebMethod

[WebMethod] 
public static string GetCities(string cityName) 
{ 
    JArray json = new JArray(
     new JObject(new JProperty("label", "label1"), new JProperty("category", "cat1"), new JProperty("value", "v1")), 
     new JObject(new JProperty("label", "label2"), new JProperty("category", "cat1"), new JProperty("value", "v2")), 
     new JObject(new JProperty("label", "label3"), new JProperty("category", "cat2"), new JProperty("value", "v3")), 
     new JObject(new JProperty("label", "label4"), new JProperty("category", "cat3"), new JProperty("value", "v4"))); 
    return json.ToString(); 
} 

Javascript код:

<script type="text/javascript"> 
    $(function() { 
     $("#txtCity").autocomplete({ 
      source: function (request, response) { 
       var param = { cityName: $('#txtCity').val() }; 
       $.ajax({ 
        url: "WebForm1.aspx/GetCities", 
        data: JSON.stringify(param), 
        dataType: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        dataFilter: function (data) { return data; }, 
        success: function (data) { 
         response(data.d); //here data.d contains the json array string 
        }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert(textStatus); 
        } 
       }); 
      }, 
      select: function(event, ui) { 
       $("#output").val(ui.item.value); 
       return false; 
      }, 
      minLength: 2//minLength as 2, it means when ever user enter 2 character in TextBox the AutoComplete method will fire and get its source data. 
     }); 
    }); 
</script> 

Но мой автозаполнения создает элемент для каждого символа в строке JSON. Я предполагаю, что не верну его правильно.

ответ

0

Фигурные его,

success: function (data) { 
         response($.parseJSON(data.d)) 
        }, 

Пришлось разобрать JSON.

Смежные вопросы