在Tomcat 7.0服务器上使用Ajax和JSF时遇到问题

时间:2011-04-08 10:22:53

标签: javascript ajax jsf

对于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服务器上?

1 个答案:

答案 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等。

相关问题