JQuery Append / Html не работает в режиме совместимости IE7 / 8/8, но работает в FF / Chrome / Opera - PullRequest
0 голосов
/ 14 декабря 2011

Схожу с ума, пытаясь найти это. Любая помощь будет оценена.

Проблема в том, что этот код ничего не делает в режиме совместимости IE7 / 8/8. Прекрасно работает в Chrome 15.0.8 и FF3.5, а также в Opera 11.60.

Он использует XML-файл для чтения через ajax, а затем помещает его в таблицу. Я попробовал несколько вещей, которые я опишу после кода.

XML:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
<issues>
 <issue>
  <id>12</id> 
  <emp>44</emp> 
  <author>1</author> 
  <comments>Example comments go here</comments> 
  <issueDate>12/5/2011</issueDate> 
  <modifiedBy /> 
  <modifiedDate /> 
  <modifiedComments /> 
  <pending>true</pending> 
  <valid>false</valid> 
  </issue>
</issues>

JavaScript:

<script type="text/javascript">
        $(document).ready(function () {
            grabIssues('2011/12/01', '2011/12/13');
        });
        function grabIssues(startDate, endDate) {
            $.ajax({
                type: "POST",
                url: "Ajax/mtlIssues.aspx",
                data: {
                startDate: startDate,
                endDate: endDate
                },
                dataType: ($.browser.msie) ? "text" : "xml",
                success: function (result) {
                    createIssues(result);
                }
            });
        }
        function createIssues(xml) {
            var data = "";
            //newIssueArray = [];
            $("issue", xml).each(function (id) {
                message = $("issue", xml).get(id);
                $id = $("id", message).text();
                $emp = $("emp", message).text();
                $author = $("author", message).text();
                $comments = $("comments", message).text();
                $issueDate = $("issueDate", message).text();
                $pending = $("pending", message).text();
                $valid = $("valid", message).text();
                //$("#empList").append("<tr><td>" + $emp + "</td><td>" + $issueDate + "</td><td>" + $comments + "</td><td>" + $pending + "</td></tr>");
                //newIssueArray.push("<tr><td>" + $emp + "</td><td>" + $issueDate + "</td><td>" + $comments + "</td><td>" + $pending + "</td></tr>");
                data += "<tr><td>" + $emp + "</td><td>" + $issueDate + "</td><td>" + $comments + "</td><td>" + $pending + "</td></tr>";
            });
            //$("#empList").html("");
            //for (i in newIssueArray) {
            //$("#empListDetails").append(newIssueArray[i]);
            //data += newIssueArray[i];
            //}
            //$("#empList").append("</table>");
            $("#empListDetails").html(data);
        }
</script>

частичный html

<div id="empList" class="ui-widget">
            <table id='empListTable'>
                <thead>
                    <tr><th>Name</th><th>Date</th><th>Comments</th><th>Pending</th></tr>
                </thead>
                <tbody id='empListDetails'></tbody>
            </table>
        </div>

Что я пробовал: Как вы можете заметить по оставленному в комментариях коду, я перепробовал все: от создания массива до использования переменной и непосредственного добавления каждого к странице при ее обнаружении.

  • Я также попытался создать пустой div (empList) и создать всю таблицу в JavaScript и использовать .html (), чтобы вставить его. Не сработало И не дописывать.
  • Я кодировал это несколькими способами, и все они работают в FF / Chrome / Opera. Но я не могу даже заставить IE7 / 8/8 compatmode даже выдать мне ошибку. Просто ничего не происходит
  • Я обновил JQuery до версии 1.7.1 с версии 1.4.2 и снова попробовал все варианты. Надеюсь, что это была ошибка, пойманная командой Jquery, а не мой код непосредственно. Не сработало.
  • Также обратите внимание, я удалил «модифицированные» части из JavaScript. Это был там, но проблема сохранялась до / после.
  • Это показывает, что вообще ничего не введено на консоли f12 / dev в IE8. Там вообще нет текста.

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 15 декабря 2011

никогда не выполняйте итерацию xml с использованием методов обхода DOM, это зависит от браузера, попробуйте использовать $. ParseXML

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