在开发过程中,我遇到了一个奇怪的问题。以下是我的jquery代码加载2个日期picker时,页面加载,这2个日期picker禁用日期是不可用的,以下是代码:
$(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响应来自服务器。这是我的两个文本字段
<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
谁能帮我解决这个问题?
你可以试试这个吗:
将dataType改为text
并计算数据
natDays = eval('(' + data + ')');
我记得在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);
}
有json库
JSON.parse('[{"some":"json"}]');
JSON.stringify([{some:'json'}]);
参考