#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. еще одна причина использовать параметризованные запросы