過去数日間、IE7 / 8/9での作業要件を満たすことができるように、JavaScriptをリファクタリングしてきました。
以下のコードは、選択ボックスからファイル名を受け取り、AJAX呼び出しを行ってXMLファイルを取得します。このファイルはシリアル化されて読み取れるようになります。
Firefox、Safari、Chromeで問題なく動作します。
コード
//this function will take the parameter of filename to then make an AJAX request to the location of that file on a server
function getXML()
{
//get filename from selection box "template_list"
filename = $('#template_list').val();
if (filename != "NULL")
{
//make AJAX request to server for template file
jQuery.ajax
(
{
type : "GET",
url : "xml\/" + filename,
dataType : "xml",
success : xmlToString
}
);
}
}
//loads xmlResponse from AJAX call into a string
function xmlToString(xmlResponse)
{
try
{
//For FF, Opera, Safari
xml = (new XMLSerializer()).serializeToString(xmlResponse);
writeEditDoc(xml);
}
catch (e)
{
// Internet Explorer.
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.loadXML(xmlResponse);
writeEditDoc(xml);
//
}
}
エラー
Internet Explorerは、このコード行が好きではありません。
xml.loadXML(xmlResponse);
投げる
SCRIPT13:タイプの不一致
私が試したこと
- AJAX呼び出しのデータ型を「xml」から「text/xml」に変更する
- JS内でネイティブの.xml()関数を使用する
サーバー側での処理に関する他の投稿を見てきました。ただし、このプロジェクトのスコープがないと、サーバーに変更を加えることはできません。
編集追加されたXMl
<?xml version="1.0" encoding="UTF-8"?>
<text>${Prologue} </text>
<listOfTags>
<Prologue fixed='n' size='100' type='textBox' value='' ></Prologue>
<Title fixed='n' size='100' type='comboBox' value='' ></Title>
<Surname fixed='n' size='100' type='textBox' value='' ></Surname>
<ProductName fixed='n' size='100' type='textBox' ></ProductName>
<VOLNumber fixed='n' size='100' type='numberBox' ></VOLNumber>
<AppointmentDate fixed='n' size='100' type='datePicker' ></AppointmentDate>
<AppointmentSlot fixed='n' size='100' type='datePicker' ></AppointmentSlot>
<Epilogue fixed='n' size='100' type='textBox' ></Epilogue>
</listOfTags>
<listOfTypes>
<textBox></textBox>
<numberBox></numberBox>
<datePicker></datePicker>
<dropDown></dropDown>
<timeBox></timeBox>
<titleBox></titleBox>
</listOfTypes>
この問題にはハックが必要です。
ありがとう