无法从asmx页面asp.net接收到ajax函数的查询结果

问题描述

我正在我的应用程序中使用Ajax和jQuery。当我返回查询结果时,没有显示该结果。代码如下:

asmx页面代码

 [WebMethod,ScriptMethod] 
 public void Getusertimelist(string id)
 {
     List<UserhoursList> employeelist = new List<UserhoursList>();
     using (sqlConnection con = new sqlConnection(ConfigurationManager.ConnectionStrings["dbcon"].ConnectionString)) 
    { 
        con.open();
        sqlCommand command12 = new sqlCommand(" SELECT CONVERT(TIME,DATEADD(s,SUM(( DATEPART(hh,Total_time) * 3600 ) + ( DATEPART(mi,Total_time) * 60 ) + DATEPART(ss,Total_time)),0)) From Todaywork Where Id='"+id+"'",con);

        string getvalue = command12.ExecuteScalar().ToString();

        UserhoursList employee = new UserhoursList();
        employee.Total_Time = getvalue;
        employeelist.Add(employee);
        con.Close();
    }

    JavaScriptSerializer js = new JavaScriptSerializer();
    Context.Response.Write(js.Serialize(employeelist));
    //return id;
}

Ajax代码

 <script type="text/javascript">  

     $(document).on("click",".get_time",function () {

         var timeid = $(this).data('id');

         $.ajax({
             url: 'UserTotaltime.asmx/Getusertimelist',method: 'post',data: { id: timeid },success: function (data) {
                 //alert(data);
             },error: function (err) {

             }
         });
     });

     $(document).ready(function () {

         $(".get_time").click(function () {

             $.ajax({
                 url: "UserTotaltime.asmx/Getusertimelist",dataType: "json",success: function (data) {
                     alert(data[0].Total_Time);
                     //  var prodetail = document.getElementById('textBox').HTML = 2;
                     document.getElementById("UserTime").innerHTML = data[0].Total_Time;
                     prodetail.html(data[0].Total_Time);

                 },error: function (err) {

                 }
             });

         });
     });
</script>  

它没有显示答案,因为当我删除那个(字符串id)参数时,它可以正常工作。当我使用它时,没有显示出答案。我想完成我的项目,但是这个错误并没有推动我。任何帮助。

解决方法

您的第一个请求看起来不错。但是在您的第二个请求中,我看不到您正在使用jQuery DataTable data选项。

$(".get_time").click(function () {

         $.ajax({
             url: "UserTotaltime.asmx/Getusertimelist",dataType: "json",method: 'post',// Where is data: { id: timeid }?
             success: function (data) {
                 alert(data[0].Total_Time);
                 //  var prodetail = document.getElementById('textbox').HTML = 2;
                 document.getElementById("UserTime").innerHTML = data[0].Total_Time;
                 prodetail.html(data[0].Total_Time);

             },error: function (err) {

             }
         });
,

如果您更改数据以发送字符串,我认为它会起作用

         $.ajax({
             url: 'UserTotaltime.asmx/Getusertimelist',data: '{ "id": ' + timeid + '}',success: function (data) {
                 //alert(data);
             },error: function (err) {

             }
         });

另一种选择是做类似的事情

 var dat = {}
 dat.id = timeid

          $.ajax({
             url: 'UserTotaltime.asmx/Getusertimelist',data: JSON.stringify(dat),error: function (err) {

             }
         });