如何在速度模板语言中调用 ajax 调用

How to call ajax call in velocity template language?

本文关键字:调用 语言 ajax 速度      更新时间:2023-09-26

我正在使用速度模板语言和javascript在联系我们页面上工作。

要求是a) 客户从两个下拉菜单(位置和商店名称)中选择值,然后单击提交按钮

b) 此过程使用 AJAX 调用(无需重新加载页面)处理,并在同一页面的下拉菜单下方显示地址

我已经开发了表单的UI界面(在contact.vtl上)。单击事件时,我可以调用 AJAX 调用,在该控件转移到 contact-detail.vtl 之后,我无法继续前进?

如何发送回对contact.vtl的响应?

function ajaxCall(){
        function getXMLRequestObject() {
            if(window.XMLHttpRequest) {
                return new XMLHttpRequest();
            } else if(window.ActiveXObject) {
                return new ActiveXObject("Microsoft.XMLHTTP");
            } else {
                alert("Your Browser does not support AJAX!! .Upgrade to latest version");
            }
        }
        var url="/application/vtl/widgets/contact-us/contact-detail.vtl?loc=XYZ&shop=ABC";
        var userContactReq = getXMLRequestObject();
        if ( userContactReq.readyState === 1 ||  userContactReq.readyState === 2 ||  userContactReq.readyState === 3 ) {
            userContactReq.abort();
        }
        userContactReq  = getXMLRequestObject();
        if ( userContactReq.readyState === 4 ||  userContactReq.readyState === 0 ) {
            userContactReq.open("GET",url,true);
            userContactReq.onreadystatechange = setReqSuccess;
            userContactReq.send(null);
        }
        function setReqSuccess() {
            if(userContactReq.readyState === 4){alert("Ready State is 4");}
            if(userContactReq.status === 200){alert("Status is 200");}
            if(userContactReq.readyState === 4 && userContactReq.status === 200) {
               
               ## How to recieve response here
                var responseString = userContactReq.responseText;
               
                console.log("end");
                alert(responseString);
            }
        }
    }

这真的与速度无关。 这是一个JavaScript问题,无论您使用什么模板或标记,答案都是相同的。我认为您需要(通过javascript)使用您在服务器的AJAX响应中获得的地址重写dom(设置div的innerHTML)以将其显示给您的用户。