dojo 使用Javascript CSJS代码和 AJAX 更新页面问题

t9eec4r0  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(160)

我有一个带按钮的XPage,与按钮相关的代码是CSJS,首先它必须将innerHTML更新为DIV,然后调用XAgent返回结果。
它不能正常工作,因为innerHTML只在XAgent执行后更新,我需要它尽快更新。
我复制下面的CSJS代码:

var x = document.getElementById('#{javascript:getClientId("divMsgApplicazione")}');
if(x!=null) x.innerHTML = "Ricerca in corso...";

var risultato;
var xhrArgs = {
    url: urlAgent,      
    handleAs: "text",   
    preventCache: true,     
    sync: true, 
    load: function(data) {
        risultato = data;               
    },

    error: function(error) {
        alert("An unexpected error occurred: " + error);
        return null;
    }
}

//Call the asynchronous xhrGet 
var deferred = dojo.xhrGet(xhrArgs);
return risultato

sync参数不能为false。
哪个罐是可能的原因?

5gfr0r5j

5gfr0r5j1#

在按钮的onclick事件中执行的SSJS代码将在刷新XPage之前执行,这意味着div将在代码(包括XAgent)完全执行之后刷新。您可以使用按钮的eventHandler中的'onComplete'属性来调用XAgent。这是一个在刷新之后执行的普通javascript事件(客户端)。
要访问eventhandler(而不是按钮)的属性,可以在XML中定位eventhandler,或者在大纲面板中选择事件。

提示:在按钮事件处理器中还有其他客户端事件,这里有一个简单的概述:

<xp:button value="Test button" id="button1">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="partial" refreshId="refresher">
        <xp:this.onStart><![CDATA[alert("onstart")]]></xp:this.onStart>
        <xp:this.onComplete><![CDATA[alert("oncomplete")]]></xp:this.onComplete>
        <xp:this.onError><![CDATA[alert("onerror")]]></xp:this.onError>
        <xp:this.action><![CDATA[#{javascript://CSJS executed in backend before refresh}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>

相关问题