У меня есть два запроса Ajax.Первый получает дату от средства выбора даты и проверяет дату в базе данных.Это работает нормально.
Второй запрос получает дату от средства выбора даты и извлекает первую дату месяца и последнюю дату месяца.Это приводит к ошибке.
Вот WebMethod:
[System.Web.Services.WebMethod]
public static string GetDateFromDB(DateTime compareDate)
{
string selectedDate = compareDate.ToString("yyyy/MM/dd");
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LoginDBConnectionString1"].ConnectionString);
// testing purpose
SqlCommand com = new SqlCommand("SELECT * from Holiday where Date='" + selectedDate + "'", conn);
SqlDataAdapter sqlDa = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sqlDa.Fill(dt);
if (dt == null || dt.Rows.Count == 0)
return "NG";
else
return "OK";
}
[System.Web.Services.WebMethod]
public static string GetFirstDateAndLastDate(DateTime firstDayDate, DateTime lastDayDate, string ddlName)
{
string firstDay = firstDayDate.ToString("yyyy/MM/dd");
string lastDay = lastDayDate.ToString("yyyy/MM/dd");
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LoginDBConnectionString1"].ConnectionString);
// testing purpose
SqlCommand com = new SqlCommand("SELECT sum([NumberOfHours]) FROM [LoginDB1].[dbo].[tbOT] where [Date] between Date = + '" + firstDay + "' And Date = + '" + lastDay + "' AND name = + '" + ddlName + "'", conn);
SqlDataAdapter sqlDa = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sqlDa.Fill(dt);
return "NA";
}
Сценарий находится прямо ниже:
jQuery(function($) {
$("[id$=datepicker]").datepicker({
onSelect: function(dateText) {
$(this).change();
$.ajax({
type: "POST",
url: "SupervisorOTRequest.aspx/GetDateFromDB",
data: '{ "compareDate" : "' + dateText + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
if (response.d == "OK") {
alert("Today is Public Holiday!!!");
$("[id$=txtOTRate]").val(1);
} else if (response.d == "NG") {
var date1 = $("[id$=datepicker]").datepicker('getDate');
var day = date1.getDay();
if (day == 1 || day == 2 || day == 3 || day == 4 || day == 5 || day == 6) {
$("[id$=txtOTRate]").val(1.5);
} else {
$("[id$=txtOTRate]").val(2);
}
}
}
});
var selectedDate = $("[id$=datepicker]").datepicker('getDate');
// var selectedDate = gg.getDate();
//var selectedDate = $("[id$=datepicker]").val();
var firstDay = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), 1);
var lastDay = new Date(selectedDate.getFullYear(), selectedDate.getMonth() + 1, 0);
var firstDayWithSlashes = (firstDay.getDate()) + '/' + (firstDay.getMonth() + 1) + '/' + firstDay.getFullYear();
var lastDayWithSlashes = (lastDay.getDate()) + '/' + (lastDay.getMonth() + 1) + '/' + lastDay.getFullYear();
var data = {};
data.fristDayDate = firstDayWithSlashes;
data.lastDayDate = lastDayWithSlashes;
data.ddlName = $("[id$=ddlName] option:selected").text();
$.ajax({
type: "POST",
url: "SupervisorOTRequest.aspx/GetFirstDateAndLastDate",
// data: '{ "fristDayDate" : "' + firstDayWithSlashes + '" + "lastDayDate" : "' + lastDayWithSlashes + '"}',
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
if (response.d == "NA") {
$("[id$=txtRemainHour]").val();
}
}
});
},
}).on("change", function() {});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
При проверке страницы в разделе Сеть> Заголовки> Запросить полезную нагрузку, она выходит правильно(ниже):
{fristDayDate: "06.01.2009", lastDayDate: "30/6/2019", ddlName: "Масрудин бин А.Б. Рахман"}
ddlName: "Масрудин бин А.Б. Рахман"
fristDayDate:" 1/6/2019 "
lastDayDate:" 30/6/2019 "
Однако при предварительном просмотре сообщения об ошибках выглядят следующим образом:
{Сообщение: «30/6/2019 не является допустимым значением для DateTime.»,…}
ExceptionType: «System.FormatException»
Сообщение: «30/6/2019 не является допустимым значением дляDateTime. "
StackTrace:"
в System.ComponentModel.DateTimeConverter.ConvertFrom (контекст ITypeDescriptorContext, CultureInfo culture, значение объекта)
в System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTyInInтип, сериализатор JavaScriptSerializer, логическое значение throwOnError, Object & convertObject)
В ответе сообщение об ошибке выглядит следующим образом:
{"Сообщение": "30/6/2019 не является допустимым значением для DateTime.", "StackTrace ":"
в System.ComponentModel.DateTimeConverter.ConvertFrom (контекст ITypeDescriptorContext, культура CultureInfo, значение объекта)
в System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal (объект o, тип serial, тип Type, тип,Boolean throwOnError, Object \ convert00Object)
в