使用JavaScript解析XML文件中的变量点击
我试图在每次单击链接时根据它的href加载不同的xml文件。 我在头下面:使用JavaScript解析XML文件中的变量点击
JAVASCRIPT
window.onload=function() {
loadXMLDoc("papers.xml"); // loads the default xml file so that page is not empty
}
function scanForXML(){
var extLinks=document.getElementById('results_list').getElementsByTagName('a');
for (i=0; i<extLinks.length; i++) {
extLinks[i].onclick=function getName()
{
var fileName=this.getAttribute('href');
loadXMLDoc(fileName);
return false;
}
}
}
HTML
<ol id="results_list">
<li> <a class="tooltip" href="paper2.xml"> Teaching with Tablet PC's </a></li>
<li> <a href="paper3.xml" class="tooltip"> Tablet PC’s as Instructional Tools </a></li>
</ol>
onclick事件的作品,我得到href值,但新XMLFILE不会被加载。 任何想法为什么?
ps:no jquery plz,不能使用它。想更好地学习基本的JavaScript
的JavaScript load码 - 顺便说一下它不会在Chrome和Opera的工作 - 但工程的默认XML文件中的Safari浏览器被加载 代码:
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",dname,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
}
谢谢! K
这是因为请求是异步的:当loadXMLDoc函数返回时没有响应。
通常的解决办法是这样的:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
// use xmlhttp.responseXML;
}
}
}
xmlhttp.open("GET",dname,false);
xmlhttp.send();
的主要区别是,你不使用loadXMLDoc函数的返回,但要求它做一些它已经获取的XML之后。
另一个解决方案是使用jquery's ajax function
编辑强制同步请求:我把它标记为重复的,因为它是一个常见的问题,但我希望这个具体的回答会帮助你。
你好, 我理解上面的逻辑,但作为js的新手,不知道如何将这个在我的代码中。这不起作用: 函数loadXMLDoc(DNAME) { \t 如果(window.XMLHttpRequest) { XMLHTTP =新的XMLHttpRequest(); } 别的 { XMLHTTP =新的ActiveXObject( “Microsoft.XMLHTTP”); } xmlhttp.onreadystatechange =函数(){ 如果(xmlhttp.readyState === 4){ 如果(xmlhttp.status === 200){ \t \t \t \t \t \t xmlDoc中= XMLHTTP。 responseXML的; } } } xmlhttp.open(“GET”,dname,false); xmlhttp。发送(); } – kate
请帮忙吗?我不知道如何使用异步请求...对于初学者xmlhttp.open(“GET”,dname,false)表示异步错误,是正确的吗? – kate
可能的重复[不能在jQuery的.ajax方法中使用返回的数据,除了函数本身](http://*.com/questions/11247066/cant-use-returned-data-in-ajax- jquery-anywhere-but-the-function-itse) –