在过去的几天里,我一直在重构我的 javascript,以便它可以满足使用 IE7/8/9 的要求。
下面的代码从选择框中获取文件名,然后进行 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>
这个问题必须有一些破解方法。
谢谢