2012-08-23 3 views
0

현재 자동 완성 텍스트 상자의 값을 검색하기 위해 Jquery와 webservice를 사용하고 있습니다. 웹 서비스에서 값이 반환 된 후 "파서 오류"라는 경고가 경고로 표시됩니다. 왜 이런거야?자동 완성 구문 분석기

Jquery 

$(document).ready(function() { 

    $.ajax({ 
     type: "POST", 
     url: "/Service/WSDataService.asmx/GetStates", 
     dataType: "json", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     success: function(data) { 
      var datafromServer = data.d.split(":"); 
      $("[id$='txtautofromDB']").autocomplete({ 
       source: datafromServer 
      }); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert(textStatus); 
     } 
    }); 
} 


web service 
     [WebMethod] 
     public string GetStates() 
     { 
      StringBuilder sbStates = new StringBuilder(); 
      List<string> stringlist = new List<String>(); 
      stringlist.Add("alabama"); 
      stringlist.Add("boston"); 
      stringlist.Add("abernathy"); 
      /*XmlDocument doc = new XmlDocument(); 
      doc.Load(Server.MapPath("~/Data/States.xml"));*/ 
      try 
      { 
       foreach (string xnl in stringlist) 
       { 

        sbStates.AppendFormat("{0}:", xnl); 
       } 

       sbStates = sbStates.Remove(sbStates.Length - 1, 1); //Removes the extra ":" 
      } 
      catch (Exception ex) 
      { 
       string exp = ex.ToString();  //Setup a breakpoint here 
       //to verify any exceptions raised. 
      } 
      return sbStates.ToString(); 
     } 

답변

0

지금까지 JSon 객체를 기대할 이유가 없습니다. 일반 문자열 기반 응답 만 요청하면 제대로 작동합니다.

JSon 객체 접근 방식을 고수하려면 문자열 목록을 반환하고 JavaScript로 직렬화 할 때 문자열 목록을 가져야합니다.

업데이트 (아약스를 통해 문자열을 얻는 방법) : 응답 문자열을 JSON 구문 분석하지 않기 때문에

$.ajax({ 
     url: "/Service/WSDataService.asmx/GetStates",   
     success: function(data) { 
      var datafromServer = data.split(":"); 
      $("[id$='txtautofromDB']").autocomplete({ 
       source: datafromServer 
      }); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert(textStatus); 
     } 
    }); 
+0

으로 변경해야합니다. 따라서 dataType : "json"섹션에서 간단한 문자열이나 문자열 배열을 작성하는 방법은 무엇입니까? – MasterP

+0

방금 ​​ –

+0

오류가 계속 표시되는 방법을 보여주기 위해 내 게시물을 업데이트했습니다. – MasterP

0

그게 가장 likley을. dataType 매개 변수를 다음으로 변경하십시오.

dataType : text 

그러나 POST를 사용하여 데이터를 가져 오는 이유는 무엇입니까? 당신은 GET

+0

이제 dataType을 텍스트로 변경하고 POST를 GET으로 변경하면 "오류"가 발생합니다 – MasterP

+0

POST를 GET으로 변경하면 /Service/WSDataService.asmx/GetStates에서 서비스를 변경해야합니다. dataType 만 Text로 변경하려고 시도하십시오. – kannix

+0

POST로 다시 변경하면 "파서 오류"가 발생합니다. – MasterP