Php 需要解决IE8jQuery问题吗
在我的发展过程中,我遇到了一个奇怪的问题。以下是我的jquery代码,用于在页面加载时加载2个日期选择器,这2个日期选择器将禁用不可用的日期,以下是代码:Php 需要解决IE8jQuery问题吗,php,jquery,mysql,ajax,json,Php,Jquery,Mysql,Ajax,Json,在我的发展过程中,我遇到了一个奇怪的问题。以下是我的jquery代码,用于在页面加载时加载2个日期选择器,这2个日期选择器将禁用不可用的日期,以下是代码: $(document).ready(function () { $('#textfield1').datepicker( "destroy" ); $('#textfield2').datepicker( "des
$(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;
});
IE8加载页面后,文本字段仍如下所示
<input name="textfield1hid" disabled="disabled" id="textfield1hid" style="background-color: #a0a0a4;" type="text"/>
下一个文本字段也有相同的属性,我很久以前就添加了这些属性,然后将它们全部删除。其他浏览器即使在IE7上也可以正常工作,但问题出在IE8上
有人能帮我解决这个问题吗?我记得在IE中遇到过类似的问题,当时我没有指定预期的响应格式。尝试在ajax请求中设置数据类型,如下所示:
$.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);
}
这将有助于调试。您可以尝试以下方法:
将数据类型更改为文本
并评估数据
natDays=评估+数据+ 有
你能打开F12快捷方式上的“开发者工具”吗?检查JavaScript控制台上的错误消息并发布在这里?@zindel:那里没有错误消息:你能尝试将cache:false选项添加到$.ajax函数中,看看是否有帮助吗?你试过使用$'textfield1'。attrdisabled,disabled;而不是trueyes,当涉及到数据类型时会出现问题:'json'实际上我的服务器响应不是json,它只是一个数组,但即使我添加了数据类型'json'firefox,ie7也给出了正确的结果,但是其他浏览器失败了,请看一下我的服务器响应,它不是json响应我已经提到过它了,但它不起作用,这就是我删除它的原因,伙计:添加了关于如何调试的信息。谢谢,我会尝试,但还有一件事,当我用编辑过的文件更新服务器时,IE8会使用非常旧的文件,可能是一个IE8缓存,我从IE8中删除了所有缓存,但它仍然使用旧的文件,任何修复它的声音的想法都非常奇怪,它会缓存。您知道服务器响应的内容类型头是什么吗?它应该是application/json。现在我没有从服务器发送json,因为这个php服务器有旧版本的php php 5.1 json,所以我在服务器端创建了一个类似json的数组并将其发送到客户端,但这是头,它将其作为application/json Accept application/json,text/javascript,*/*;q=0.01Wow。这是公认的答案吗?这是可行的,但想到有人会在生产代码中使用它,我就不寒而栗。我客户的服务器有旧版本的PHP,它不支持JSON,就是这样,我必须从服务器端创建一个数组,否则我可以使用$JSON_encode,但非常感谢diEcho:这将对我下次有所帮助
$.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.parse('[{"some":"json"}]');
JSON.stringify([{some:'json'}]);