2013-08-15 2 views
1

SQL Server 데이터베이스에서 데이터를 검색하고 jQuery ajax를 사용하여 데이터를 검색하려고합니다. 이 데이터를 일부 jqPlot 차트에 가져와야하며 이것이 가장 좋은 방법이라고 생각했습니다. 더 좋은 방법이 있다면 알려주세요.jQuery ajax를 사용하여 Webservice에서 데이터를 검색 할 수 있습니까?

자바 스크립트/jQuery를 :

$(document).ready(function() { 

$(".datepicker").datepicker(); 

$(".submitButton").click(handleSubmitButton); 

});  //end of document ready 

function handleSubmitButton() { 

    var AnDParms = new Object(); 
    AnDParms.startDate = $('.start-date').val(); 
    AnDParms.endDate = $('.end-date').val(); 
    AnDParms.facility = $('.FacilityDDL').val(); 

    var DTO = { 'parameters': AndParms }; 

    $.ajax({ 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify(DTO), 
     url: "GetAdmitsDischarges.asmx.cs/GetAandD", 
     dataType: "json", 
     success: function (data) { 
      alert("Data: " + data.d); 
      // do chart stuff here. 
     }, 
     error: function (data) { 
      alert("Error!" + data.d); 
     } //end of success 
    }); //end of ajax call 
} //end of handleSubmitButton function 

웹 서비스 (GetAdmitsDischarges.asmx.cs) : 여기

내 현재 코드입니다

namespace DashboardTest2010 
{ 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    [ScriptService] 
    public class GetAdmitsDischarges : WebService 
    { 
     public class AnDParms 
     { 
      public string startDate { get; set; } 
      public string endDate { get; set; } 
      public string facility { get; set; } 
     } 

     public class AnDReturns 
     { 
      public string Admits { get; set; } 
      public string Discharges { get; set; } 
     } 

     [WebMethod] 
     public string GetAandD(AnDParms parameters) 
     { 
      //StringBuilder results = new StringBuilder(); 
      AnDReturns resultsObj = new AnDReturns(); 
      resultsObj.Admits = "0"; 
      resultsObj.Discharges = "0"; 
      string results = ""; 

      string connect = (the data connection string) 
      StringBuilder query = new StringBuilder(); 
      query.Append("Select 'Admissions' SeriesType,"); 
      //the rest of the query. 

      using (SqlConnection conn = new SqlConnection(connect)) 
      { 
       using (SqlCommand cmd = new SqlCommand(query.ToString(), conn)) 
       { 
        cmd.Parameters.AddWithValue("StartDate", parameters.startDate.ToString()); 
        cmd.Parameters.AddWithValue("EndDate", parameters.endDate.ToString()); 
        cmd.Parameters.AddWithValue("FacilityID", parameters.facility.ToString()); 

        SqlDataReader rdr = cmd.ExecuteReader(); 

        if (rdr.HasRows) 
        { 
         while (rdr.Read()) 
         { 
          if (rdr["SeriesType"].ToString() == "Admissions") 
          { 
           resultsObj.Admits = rdr["SeriesCount"].ToString(); 
          } 
          if (rdr["SeriesType"].ToString() == "Discharges") 
          { 
           resultsObj.Discharges = rdr["SeriesCount"].ToString(); 
          } 
         } 
         results = JsonConvert.SerializeObject(resultsObj); 
        } 
       } 
      } 
      return results; 
     } 
    } 
} 

마크 최대 2 개 날짜 필드와 단순한 페이지입니다 (datepickers로 설정), 드롭 다운 목록 (facility) 1 개, 제출 버튼 1 개가 있습니다.

<script type="text/javascript" src="js/jqPlot/jquery.jqplot.js"></script> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jqPlot/jquery.jqplot.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.10.3.custom.js"></script> 
<script type="text/javascript" src="js/json2.js"></script> 
<script type="text/javascript" src="js/DashboardTest.js"></script> 

은 "jquery.js는"jqPlot와 함께 JQuery와 있습니다 : 여기에 있는지 내가하는 데 필요한 모든을 만들기 위해 내 스크립트 태그입니다. 나는 IE 7+ (그러므로 json2.js)를 지원해야한다. DashboardTest.js는 자바 스크립트이다.

실행하면 아무 것도 발생하지 않고 제출 버튼을 클릭해도 경고가 표시되지 않습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 내 시스템 관리자는 내가 궁금해하는 경우 피들을 설치하지 못하게했다 ...

+1

브라우저 도구의 자바 스크립트 콘솔과 네트워크 탭에서 오류를 확인 했습니까? xhr 요청이 기대했던 것임을 확인 했습니까? –

+0

웹 브라우저의 웹 개발자 콘솔에 오류가 있습니까? –

+0

방화 광 콘솔에 오류가 없습니다. – BradAtCC

답변

2

WebService를 호출하는 중에 코드 뒤에 GetAdmitsDischarges.asmx.cs 페이지가 아닌 URL에 GetAdmitsDischarges.asmx 페이지를 사용하십시오.

기타 1 개 더 있습니다. 당신은 GET 요청을하고 있습니다. 기본적으로 WebServices는 그것을 허용하지 않습니다. web.config에

<webServices> 
    <protocols> 
     <add name="HttpGet"/> 
    </protocols> 
</webServices> 

을 추가해야 할 수 있습니다.

+0

"인식 할 수없는 구성 섹션 webServices"가 있습니다. web.config에 추가 된 것이 특정 위치에 있습니까? – BradAtCC

+0

나는 그것을 마지막 system.web 내부로 옮겼다. 위의 오류를 수정 한 것 같았지만 이제는이 오류가 발생한다. "NetworkError : 500 Internal Server Error - http : // localhost : 52242/GetAdmitsDischarges.asmx/GetAndD? {% 22startDate % 22 : % 2208/01/2013 % 22, % 22endDate % 22 : % 2208/31/2013 % 22, % 22facility % 22 : % 22855 % 22} "코드를 변경하여 DTO의 AandDParm을 JSON.stringify에 전달했습니다. – BradAtCC

+0

예 web.config 섹션은 system.web 안에 있어야합니다. 오류 정보 - 이벤트 로그에서 ASP.NET 관련 오류를 확인할 수 있습니까? 500은 매우 일반적인 로그이지만 이벤트 로그는 자세한 내용을 제공 할 수 있습니다. 또한 웹 서비스가 기대하는 매개 변수는 무엇입니까? 브라우저 주소창에서 직접 URL로 실행 해 볼 수 있습니까? –

관련 문제