2010-02-08 80 views
0

這是我的web服務負責填補autocompleate:用webservice數據填充jQuery自動完成列表?

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
[System.Web.Script.Services.ScriptService] 
public class WebService : System.Web.Services.WebService { 

[WebMethod] 
public List<Farms> GetFarms1() 
{ 
    PlaseTableAdapter pta = new PlaseTableAdapter(); 
    PlaseLande.PlaseDataTable pdt = pta.GetData(); 

    List<Farms> farms = new List<Farms>(); 
    foreach (DataRow dr in pdt) 
    { 
     string farmName = (string)dr["FARMNAME"]; 
     string farmID = (string)dr["FARMID"]; 
     farms.Add(new Farms(farmID, farmName)); 
    } 
    return farms; 
} 


public class Farms 
    { 
     public Farms(string farmid, string farmname) 
     { 
      FARMID = farmid; 
      FARMNAME = farmname; 
     } 

     public string FARMID { get; set; } 
     public string FARMNAME { get; set; } 
    } 

} 

這是jQuery來從WebService

$("#txtFarms").autocomplete("WebService.asmx/GetFarms1", { 
         dataType: 'json', 
          parse: function(data) { 
           var parsed = []; 
           data = data.Farms; 

           for (var i = 0; i < data.length; i++) { 
            parsed[parsed.length] = { 
             data: data[i], 
             value: data[i].FARMNAME, 
             result: data[i].FARMNAME 
            }; 
           } 

           return parsed; 
          }, 
          formatItem: function(item) { 
           alert(item); 
           return item.FARMNAME + ' (' + item.FARMID + ')'; 
          } 
         }); 

我的代碼不幹活我失去了什麼得到JSON數據? 坦克的任何援助!

+0

你的代碼是做什麼的? – 2010-02-08 07:03:41

+0

它使用至少就是我想要的web服務填充jQuery自動完成列表。 – qorsmond 2010-02-08 07:08:50

+0

@user不,就像運行代碼時會發生什麼?在我們可以幫助您解決問題之前,我們需要知道它有什麼問題。 – 2010-02-12 04:19:27

回答

0

尋找返回一個真正的json。我認爲你應該添加一個dataAnnotation ..

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

所以在你的代碼:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public List<Farms> GetFarms1() // why you don't have no parameter like the term of search ? 
{ 
PlaseTableAdapter pta = new PlaseTableAdapter(); 
PlaseLande.PlaseDataTable pdt = pta.GetData(); 

List<Farms> farms = new List<Farms>(); 
foreach (DataRow dr in pdt) 
{ 
    string farmName = (string)dr["FARMNAME"]; 
    string farmID = (string)dr["FARMID"]; 
    farms.Add(new Farms(farmID, farmName)); 
} 
return farms; 
} 

看到How to return JSON from webservice

$("#txtFarms").autocomplete({ 
     source: function(request, response) { 
     $.ajax({ 
     url: "WebService.asmx/GetFarms1", 
     dataType: "json", 
     data: { 
     name_startsWith: request.term // i don't see it in your code ... why? 
     }, 
     success: function(data) { 
     response($.map(data.Farms, function(item) { 
      return { 
      label: item.FARMNAME + ' (' + item.FARMID + ')';, 
      value: item.FARMNAME 
      } 
     })); 
     } 
    }); 

的更多信息:http://jqueryui.com/autocomplete/#remote-jsonp

它可以幫助你?