在我的开发中,我遇到了一个奇怪的问题。以下是我的jquery代码,当页面加载时加载2个datepicker,那2个datepickers禁用不可用的日期,这里是代码:
$(document).ready(function () {
$('#textfield1').datepicker( "destroy" );
$('#textfield2').datepicker( "destroy" );
$("#loading2").html('<img src="images/loading.gif"/>');
var dataString = 'a=b';
$.ajax({
type: "GET",
url: "include/getdate.php",
data: dataString,
success: function(data){
$(".tempimg").hide();
$("#textfield1hid").datepicker({
showOn: "button",
buttonImage: "/images/calendar.gif",
buttonImageOnly: true,
dateFormat: 'd M yy',
altField: "#textfield1",
altFormat: "yy-mm-dd",
beforeShowDay: reservedDates
});
$("#textfield2hid").datepicker({
showOn: "button",
buttonImage: "/images/calendar.gif",
buttonImageOnly: true,
dateFormat: 'd M yy',
altField: "#textfield2",
altFormat: "yy-mm-dd",
beforeShowDay: reservedDates
});
natDays = data;
function reservedDates(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1
&& date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
$("#loading2").html('');
}
});
return false;
});
此代码在Firefox和IE7上正常运行。但是当它在IE8中显示时,日期选择器没有加载,但是ajax响应来自服务器。这些是我的2个文本字段
<input type="text" name="textfield1hid" id="textfield1hid" />
<input type="text" name="textfield2hid" id="textfield2hid" />
这是来自服务器的响应:
[[04,01],[04,01],[04,02],[04,02],[04,03],[04,03]]
IE8加载页面后,文本字段仍然如下所示
<input name="textfield1hid" disabled="disabled" id="textfield1hid" style="background-color: #a0a0a4;" type="text"/>
下一个文本字段也获得了相同的属性,我很久以前添加了它们并将它们全部删除了,其他浏览器工作正常甚至IE7但问题是在IE8中
任何人都可以帮我解决这个问题
答案 0 :(得分:1)
你可以试试这个:
将dataType更改为文本
并评估数据。
natDays = eval('('+ data +')');
答案 1 :(得分:0)
当我没有指定我期望的响应格式时,我记得IE中的类似情况遇到了麻烦。尝试在ajax请求中设置dataType,如下所示:
$.ajax({
type: "GET",
url: "include/getdate.php",
data: dataString,
dataType: 'json',
success: successCallback
}
此外,如果您想捕获错误,您应该能够指定错误回调,如下所示:
$.ajax({
....
error: errorCallback
....
}
function errorCallback(jqXHR, textStatus, errorThrown) {
alert(jqXHR);
alert(textStatus);
alert(errorThrown);
}
这应该有助于调试。
答案 2 :(得分:0)