Нужно решить проблему IE 8 Jquery - PullRequest
1 голос
/ 05 апреля 2011

В своем развитии у меня возникла странная проблема. Ниже мой код jquery для загрузки 2 DatePicker при загрузке страницы, эти 2 DatePicker отключить даты, которые недоступны, вот код:

$(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 ]

1 голос
/ 06 апреля 2011

Можете ли вы попробовать это:

измените dataType на text

и оцените данные.

natDays = eval ('(' + data + ')');

0 голосов
/ 06 апреля 2011

есть библиотека json

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

Ссылка

0 голосов
/ 05 апреля 2011

Я помню, что у меня возникали проблемы в подобных случаях в IE, когда я не указывал ожидаемый формат ответа.Попробуйте установить dataType в запросе 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);
}

Это должно помочьс отладкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...