JSON stringify auf Listen in C # Web-Formular

stimmen
1

Ich benutze JSON.stringifyfür eine Textbox zum automatischen Vervollständigung für ein Web-Formular. Was ich tun möchte , ist; ein Textfeld für die Städtenamen automatisch vervollständigt durch entsprechende Stadtnamen aus meiner Datenbank zu bekommen. Automatische Vervollständigung arbeitet nach 3 Buchstaben.

Das Problem ist; vorgeschlagene Stadtnamen sind in einer Zeile angezeigt. Zum Beispiel, wenn ich getippt sind zu Textbox (die „MainContent_city“ genannt) wird gezeigt , wie: „Arequipa, Arecibo, sind Östersund, Arezzo, Arendal“ in einer Zeile, als ein String - Objekt. Was ich will , ist all die Städtenamen Zeile für Zeile zu zeigen. Sowie;

Arequipa
Arecibo
Sind Östersund
Arezzo
Arendal

Unten ist mein Javascript-Code;

<script type=text/javascript>
 $(function () {
   $(#MainContent_city).autocomplete({
      source: function (request, response) {
      var param = { cityname: $('#MainContent_city').val() };
      $.ajax({
      url: HotelAdd.aspx/GetCities,
      data: JSON.stringify(param, null, param.length),
      dataType: json,
      type: POST,
      contentType: application/json; charset=utf-8,
      dataFilter: function (data) { return data; },
      success: function (data) {
   response($.map(data, function (item) {
     return {
         value: item
       }
     }))
    },
 error: function (XMLHttpRequest, textStatus, errorThrown) {
   alert(errorThrown);
   }
  });
 },
   minLength: 3
  });
 });
</script>  

Das ist mein C # -Code für „GetCities“ -Methode

    [WebMethod]
    public static List<string> GetCities(string cityname)
    {
        List<string> City = new List<string>();

        string query = SELECT name FROM City WHERE name LIKE @SearchText + '%';
        //Note: you can configure Connection string in web.config also.
        SqlCommand cmd = new SqlCommand(query, connection);
        cmd.Parameters.AddWithValue(@SearchText, cityname);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet ds2 = new DataSet();
        adapter.Fill(ds2);

        for(int i=0; i<ds2.Tables[0].Rows.Count; i++)
        {
            City.Add(ds2.Tables[0].Rows[i][0].ToString());

        }

        return City;
    }
Veröffentlicht am 20/11/2015 um 08:08
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
3

Die Daten enthalten ist in data.d.

Ändern Sie dies response($.map(data, function (item)aufresponse($.map(data.d, function (item)

success: function (data)
 {
   response($.map(data.d, function (item) {
   return 
    {
   value: item
    }
 }))
},
Beantwortet am 20/11/2015 um 08:14
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more