我有一个用jsf编写的消息页面,在这个页面中我有一个包含消息标题的表作为commandlink。在这些命令链接中,我嵌套了ajax来请求我的bean从db读取消息内容并在页面上显示它。我通过在textearea中显示消息内容来测试此功能。但问题在于我想在javascript警报中显示内容。因此,每当我单击commandlink时,警报都会显示消息的内容。但是,如果我将javascript方法定义为commandlink onclick属性,那么它将在ajax请求之前运行,并且不会显示任何内容! 我认为我们需要一个属性来定义一个在ajax请求完成后运行的javascript方法。但那个属性是什么? thanx任何有用的答案!
答案 0 :(得分:0)
XMLHttpRequest的新手?尝试使用此代码
<!DOCTYPE HTML>
<html>
<head><title></title></head>
<body>
<input type="button" id="foo" value="load url" /><br/>
<input type="text" id="url" /><br/>
<textarea id="responses"></textarea>
<script type="text/javascript">
document.querySelector("#foo").addEventListener("click",function(ev){
var xhr=new XMLHttpRequest();
var url=document.querySelector("#url").value;
xhr.open("GET",url);
xhr.addEventListener("readystatechange",function(ev){
var xhr=ev.target;
if(xhr.readyState<4)return;
document.querySelector("#responses").value+=xhr.responseText;
alert(xhr.responseText);
});
xhr.send();
});
</script>
</body></html>
答案 1 :(得分:0)
XHTML
<h:commandLink id="button" value="button">
<f:ajax render="@this"
onevent="openPopup"
listener="#{myBean.getData}" />
</h:commandLink>
的Javascript
function openPopup(data){
if(data.status == "success"){
// open popup with your message
}
}