Вызов jQuery AJAX не работает на стороне сервера

#jquery #asp.net #ajax #vb.net

#jquery #asp.net #ajax #vb.net

Вопрос:

у меня есть веб-метод jQuery AJAX в ASP.Net это отлично работает при локальном тестировании. но при загрузке на сервер иногда это работает, иногда нет. когда я отлаживал код с помощью firebug, я вижу, что webmethod вызывается, но сразу переходит к разделу ошибок ajax-скрипта. это моя вторая неделя исследований, и я все еще не мог найти ничего, что могло бы мне помочь.

Код jQuery:

 <script type="text/javascript">
    $(document).ready(function () {
        //get current date
        var _currdate = new Date();
        var currday = _currdate.getDate();
        var currmonth = _currdate.getMonth()   1;
        var curryear = _currdate.getFullYear();
        var currdate = curryear   "-"   currmonth   "-"   currday;

        //on page load event, check to see if employees are added to the schedule
        $.ajax({
            type: "POST",
            url: "Schedule.aspx/GetSchedule",
            data: '{"FinancialDate" : "'   currdate   '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $('#timepanel').append(data.d);
                $('.schslider').each(function () {
                    //check employee checkboxes if schedule exists
                    if ($('.schslider').length > 0) {
                        $('input#chk'   $(this).attr('id')).attr('checked', true);
                        $('input:checkbox:checked').parent('label').addClass('selected');
                        empcount = $('input:checkbox:checked').length;
                        $('#emplistddl').text("Liste d'employés ("   empcount   " Employés Selectionnés) | Employees' List ("   empcount   " Selected Employees)");
                    }
                    //get the values for the slider
                    var startvalue = $('span#'   $(this).attr('id')   'start').text();
                    var endvalue = $('span#'   $(this).attr('id')   'end').text();
                    startvalue = (parseInt(startvalue.substring(0, 2), 10) * 60)   parseInt(startvalue.substring(3), 10);
                    endvalue = (parseInt(endvalue.substring(0, 2), 10) * 60)   parseInt(endvalue.substring(3), 10);
                    $('span#'   $(this).attr('id')   'start').remove();
                    $('span#'   $(this).attr('id')   'end').remove();
                    $(this).slider({
                        range: true,
                        min: 480,
                        max: 1380,
                        values: [startvalue, endvalue],
                        step: 5,
                        slide: function (event, ui) {
                            var minutes0 = parseInt(ui.values[0] % 60);
                            var hours0 = parseInt(ui.values[0] / 60 % 24);
                            var minutes1 = parseInt(ui.values[1] % 60);
                            var hours1 = parseInt(ui.values[1] / 60 % 24);
                            var time = getTime(hours0, minutes0)   ' - '   getTime(hours1, minutes1);
                            $(this).parent('div').children('span#'   $(this).attr('id')   'timestamp').text(time);
                            var total = parseFloat((hours1   (minutes1 / 60)) - (hours0   (minutes0 / 60)));
                            $(this).parent('div').children('span#'   $(this).attr('id')   'total').text(total.toFixed(2)   ' hrs');
                        }
                    });
                });
            },
            error: function (e) { $('#loaderrorboxtimepanel').removeClass('hidebox').addClass('showbox'); }
        });
</script>
  

код веб-метода приведен ниже:

 <WebMethod(True)> _
    Public Shared Function GetSchedule(ByVal FinancialDate As String) As String
        Dim StoreNumber_ForWebMethod As String = ConfigurationManager.AppSettings("StoreNumberKey")
        Dim _SqlConnection As New SqlConnection("Data Source=INTRIS;Initial Catalog=*****;User ID=sa;Password=*****")
        Dim _SqlDataAdapter As New SqlDataAdapter("select h.magasin, h.employe, e.nom, h.datefinancier, h.debut, h.fin, h.totalheure, h.annee, h.semaine, h.evenement, h.etat, h.breakstart, h.breakend " _
                                                amp; "from web.dbo.hours h , web.dbo.employee e " _
                                                amp; "where h.employe = e.numero and h.magasin = " amp; StoreNumber_ForWebMethod amp; " and h.datefinancier = '" amp; FinancialDate amp; "'", _SqlConnection)
        Dim _DataSet As New DataSet
        Dim ScheduleBuilder As String = Nothing

        _SqlDataAdapter.Fill(_DataSet, "Schedule")

        If Not _SqlDataAdapter Is Nothing Then
            If _DataSet.Tables("Schedule").Rows.Count > 0 Then
                For i As Integer = 0 To _DataSet.Tables("Schedule").Rows.Count - 1
                    ScheduleBuilder  = "<div id='" amp; _DataSet.Tables("Schedule").Rows(i).Item("employe").ToString amp; "timecontainer' class='timecontainer'>" _
                                    amp; "<span id='" amp; _DataSet.Tables("Schedule").Rows(i).Item("employe").ToString amp; "start'>" amp; _DataSet.Tables("Schedule").Rows(i).Item("debut").ToString amp; "</span>" _
                                    amp; "<span id='" amp; _DataSet.Tables("Schedule").Rows(i).Item("employe").ToString amp; "end'>" amp; _DataSet.Tables("Schedule").Rows(i).Item("fin").ToString amp; "</span>" _
                                    amp; "<label>" amp; StrConv(_DataSet.Tables("Schedule").Rows(i).Item("nom").ToString, VbStrConv.ProperCase) amp; "</label>" _
                                    amp; "<span id='" amp; _DataSet.Tables("Schedule").Rows(i).Item("employe").ToString amp; "timestamp' class='timestamp'>" amp; _DataSet.Tables("Schedule").Rows(i).Item("debut").ToString amp; " - " amp; _DataSet.Tables("Schedule").Rows(i).Item("fin").ToString amp; "</span>" _
                                    amp; "<span id='" amp; _DataSet.Tables("Schedule").Rows(i).Item("employe").ToString amp; "total' class='total'>" amp; _DataSet.Tables("Schedule").Rows(i).Item("TotalHeure").ToString amp; " hrs</span>" _
                                    amp; "<div id='" amp; _DataSet.Tables("Schedule").Rows(i).Item("employe").ToString amp; "' class='schslider'></div></div>"
                Next
            End If
        End If

        Return ScheduleBuilder
    End Function
  

буду признателен за любую помощь

Обновление совместимы ли JSON и webmethods с SQL Server 2000?

Комментарии:

1. @geek: Я использую pagemethod, поскольку он находится в интрасети

2. @embo: я не понимаю, что вы имеете в виду под этим?

3. Поместите следующую функцию ошибки в вызов ajax и посмотрите, что она говорит: function(x, s, m) { alert(m); }

4. @patmortech: написано: Внутренняя ошибка сервера. дело в том, что иногда он загружает расписание, а иногда выдает мне эту ошибку.

Ответ №1:

Ответить

сначала я хотел бы поблагодарить @patmortech за то, что он направил меня в правильном направлении, показав, в чем была ошибка. как только я узнал об этом, использовал firebug в Firefox для отладки проблемы, и в нем отсутствовала одна кавычка для

 Dim _SqlDataAdapter As New SqlDataAdapter("select h.magasin, h.employe, e.nom, h.datefinancier, h.debut, h.fin, h.totalheure, h.annee, h.semaine, h.evenement, h.etat, h.breakstart, h.breakend " _
                                            amp; "from web.dbo.hours h , web.dbo.employee e " _
                                            amp; "where h.employe = e.numero and h.magasin = **'" amp; StoreNumber_ForWebMethod amp; "'** and h.datefinancier = '" amp; FinancialDate amp; "'", _SqlConnection)
  

потому что это строка.

проблема решена 🙂

Комментарии:

1. еще одна причина использовать параметризованные запросы