对于Ajax,我是一个完全的初学者,由于某种原因,我无法得到一个简单的例子来工作...
javascript:
var xmlhttp;
function reloadIssues()
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4)
{
document.getElementById("tester").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET", "test.xhtml", true);
xmlhttp.send();
}
和测试xhtml页面:
<div id="test">
TEST TEXT
</div>
<button type="button" onclick="reloadIssues()">Change Content</button>
调用JS文件。
我已经测试了一些,似乎“xmlhttp.onreadystatechange”总是为空,它永远不会进入它的功能。
还有其他东西,然后代码可能是问题吗?也许在tomcat服务器上?
答案 0 :(得分:2)
相关元素的ID为test
<div id="test">
然而,您正在tester
document.getElementById("tester")
相应修复。
无关,在谈到ajax时,我建议采用一个体面的框架而不是一个家庭生长的框架。我可以热烈推荐jQuery来做ajax工作。然后就像这样简单:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('#change').click(function() {
$.get('test.xhtml', function(responseText) {
$('#test').text(responseText);
});
});
});
</script>
<body>
<div id="test">TEST TEXT</div>
<button id="change">Change content</button>
</body>
此外,当将ajax与基于组件的MVC框架(如JSF)结合使用时,您必须考虑很多的事情,以保持客户端和服务器端状态同步。我也不建议家养。要么升级到带有内置ajax魔法的JSF 2.0
<h:form>
<h:commandButton value="Change content" action="#{bean.change}">
<f:ajax execute="@form" render=":test" />
</h:commandButton>
</h:form>
<h:panelGroup id="test" layout="block">#{bean.text}</h:panelGroup>
使用此方法
public void change() {
this.text = "new text";
}
或当你还在使用JSF 1.x时,然后采用基于ajax的组件库,如RichFaces,IceFaces,PrimeFaces等。