我正在使用jQuery并尝试加载一个变量来代替命名的xml文件。 我的代码:
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#theForm').ajaxForm(function(responseXML2) {
var myxml = responseXML2;
alert(responseXML2);
displayResult();
});
});
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
alert("loading xmlhttprequest");
xhttp=new XMLHttpRequest();
}
else
{
alert("loading activeX");
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
alert("bottom load");
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}
function displayResult()
{
alert("setting vars");
alert("displayResult called");
//xml=loadXMLDoc(responseXML2); //tried this and the line below, among others
xml=responseXML2;
alert("xmlDocLoaded");
xsl=loadXMLDoc("xslt-test.xsl");
alert("XSLloaded");
// code for IE
if (window.ActiveXObject)
{
alert("IE");
ex=xml.transformNode(xsl);
document.getElementById("ieiresponse").innerHTML=ex;
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
alert("notIE");
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
document.getElementById("ieiresponse").appendChild(resultDocument);
}
}
在上面的代码中,我希望:
//xml=loadXMLDoc(responseXML2); //tried this and the line below, among others
xml=responseXML2;
而不是命名文件:
xsl=loadXMLDoc("example.xml");
当我运行代码时,如果我命名该文件,它就有用,但是当我使用变量时(它确实显示在警报中,因此被拉动),它会停止上面一行的代码(放置变量作为xml文件)
任何帮助将不胜感激!提前谢谢。
答案 0 :(得分:2)
来自评论:
我基本上想将表单发布到服务器, 以XML格式接收响应,应用XSLT 到XML并在页面上的div中显示它。
从我所看到的,这样的事情应该已经做了你想做的一切:
$(document).ready(function() {
// prepare sending the AJAX form (use ajaxSubmit() to actually send it)
$('#theForm').ajaxForm({
dataType: 'xml',
success: function(responseText, statusText, xhr, $form) {
// jQuery xslt plugin required for this:
$.xslt({
xml: xhr.responseXML,
xslUrl: "xslt-test.xsl",
target: "#ieiresponse"
});
},
error: function(xhr, textStatus, errorThrown) {
alert("Oops, there was an error: " + textStatus);
}
});
});
你的代码非常容易被jQuery已经为你做的事情所困扰(比如选择正确的XmlHttpRequest对象,具体取决于浏览器类型和其他东西)。你可以而且应该摆脱所有这一切。你应该开始阅读一些jQuery教程,因为即使你说的不同,你的代码也没有表明你真正拥有的 。
答案 1 :(得分:0)
好的,我回答了我自己的问题: 这是其他人的结果
1)我嵌套了我的函数,因此它实际上可以引用变量。 2)我换了
xml=loadXMLDoc(responseXML2);
使用:
xml=responseXML2;
现在可以在嵌套函数中使用。