需要解决IE 8 Jquery问题

时间:2011-04-05 12:05:51

标签: php jquery mysql ajax json

在我的开发中,我遇到了一个奇怪的问题。以下是我的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中

任何人都可以帮我解决这个问题

3 个答案:

答案 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)

json library

JSON.parse('[{"some":"json"}]');
JSON.stringify([{some:'json'}]);

Reference

相关问题