繁体   English   中英

您可以使用jQuery ajax从Webservice检索数据吗?

[英]Can you use jQuery ajax to retrieve data from Webservice?

我试图从SQL Server数据库中检索数据,并使用jQuery ajax进行处理。 我需要将这些数据放入一些jqPlot图表中,并认为这是执行此操作的最佳方法。 如果有更好的方法,请告诉我。

这是我当前的代码:

使用Javascript / 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

Web服务( 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个日期字段(设置为日期选择器),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是上面的javascript。

当我运行此命令时,什么也没有发生,当我单击“提交”按钮时,没有警报显示。 任何帮助将非常感激。 如果您对此感到疑惑,我的系统管理员不允许我安装Fiddle。

调用WebService时,请使用GetAdmitsDischarges.asmx页面获取URL,而不要使用代码隐藏在GetAdmitsDischarges.asmx.cs页面的后面。

另外还有1件事。 您正在执行GET请求,默认情况下WebServices不允许它。 您可能需要添加

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

到您的web.config。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM