Не получен результат запроса к ajax-функции со страницы asmx asp.net

#c# #jquery #asp.net #ajax

#c# #jquery #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",
                 method: 'post',
                 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>  
  

Он не показывает мне ответ, потому что, когда я удаляю этот параметр (string id), он работает отлично. Когда я использую его, он не показывает мне ответ. Я хочу завершить свой проект, но эта ошибка не подталкивает меня. Пожалуйста, любая помощь.

Ответ №1:

Ваш первый запрос выглядит хорошо. Но в вашем втором запросе я не вижу, что вы используете параметр 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) {

             }
         });
  

Ответ №2:

Я думаю, это сработает, если вы измените данные для отправки строки

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

             }
         });
  

альтернативой является выполнение чего-то вроде

  var dat = {}
 dat.id = timeid

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

             }
         });