完成ajax请求后,执行javascript警报

时间:2014-01-19 08:41:55

标签: javascript html ajax jsf commandlink

我有一个用jsf编写的消息页面,在这个页面中我有一个包含消息标题的表作为commandlink。在这些命令链接中,我嵌套了ajax来请求我的bean从db读取消息内容并在页面上显示它。我通过在textearea中显示消息内容来测试此功能。但问题在于我想在javascript警报中显示内容。因此,每当我单击commandlink时,警报都会显示消息的内容。但是,如果我将javascript方法定义为commandlink onclick属性,那么它将在ajax请求之前运行,并且不会显示任何内容! 我认为我们需要一个属性来定义一个在ajax请求完成后运行的javascript方法。但那个属性是什么? thanx任何有用的答案!

2 个答案:

答案 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
  }
}