2017-04-01 55 views
0

我想實現jQuery - 文本框自動完成。爲此設置一個Web服務。asp.net webservice jquery textbox autocomplete

[WebMethod] 


    public List<Condition> GetCondition(string term) 
    { 


     List<Condition> listCondition = new List<Condition>(); 

     string cs = ConfigurationManager.ConnectionStrings["db5"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(cs)) 
     { 
      SqlCommand cmd = new SqlCommand("spSelCondition", con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.Add(new SqlParameter() 
      { 
       ParameterName = "@term", 
       Value = term 
      }); 
      con.Open(); 
      SqlDataReader rdr = cmd.ExecuteReader(); 
      while (rdr.Read()) 
      { 
       listCondition.Add(new Condition { ConditionID = rdr["ConditionID"].ToString(), ConditionName = rdr["ConditionName"].ToString() }); 
      } 
      return listCondition; 
     } 
    } 

    public class Condition 
    { 
     public string ConditionName { get; set; } 
     public string ConditionID { get; set; } 
    } 

WebService的工作完全正常。使用jquery自動填充這個我編寫的javascript來填充文本框。

<script type="text/javascript"> 
      $(document).ready(function() { 

       $('#txtCondition').autocomplete({ 
        source: function (request, response) { 
         $.ajax({ 
          url: 'ibs_ws.asmx/GetCondition', 
          method: 'post', 
          contentType: 'application/json;charset=utf-8', 
          data: JSON.stringify({ term: request.term }), 
          dataType: 'json', 
          success: function (data) { 
           response(data.d); 


          }, 
          error: function (err) { 
           alert(err); 
          } 
         }); 
        } 

      }); 
     })</script> 

當我訪問web服務所花費的@term作爲參數,並在XML甲酸與ConditionID和ConditionName返回結果。但是在webform中,當我在文本框中輸入任何內容時,它會使用[對象對象]進行警報。

可能是什麼問題。

- 感謝&問候

回答

0

也許它會幫助你。試試這個

我想你需要使用$ .map(data.d,function(value,key){})。這裏是需要更新你的成功代碼,如下所示的例子,那麼你可以在對象中獲得價值。

success: function (data) { 
         response($.map(data.d, function (value, key) { 
          return { 
           ConID: value.ConditionID, 
           ConNAme: value.ConditionName, 
          } 
         })) 
        }, 

正如你所說的你的服務返回conditionID和Name,所以我使用這些變量,你可以匹配它返回的東西。