Xpages 通过AJAX从传统Domino web应用程序调用XAgent

Xpages 通过AJAX从传统Domino web应用程序调用XAgent,xpages,Xpages,我创建了一个XAgent,通过window.location可以正常工作,但我无法通过AJAX让它工作。这个代理是从弹出div上的delete按钮调用的,所以我不想在XAgent中写入responseStream,我更愿意在完成后运行代理并通过javascript关闭弹出窗口 我的XAgent由URLdoc.$DBPath.value+“/XAgent\u DeleteDemand.xsp?open&id=“+doc.$DocUNID.value调用,如下所示: javascript:impor

我创建了一个XAgent,通过
window.location
可以正常工作,但我无法通过AJAX让它工作。这个代理是从弹出div上的delete按钮调用的,所以我不想在XAgent中写入responseStream,我更愿意在完成后运行代理并通过javascript关闭弹出窗口

我的XAgent由URL
doc.$DBPath.value+“/XAgent\u DeleteDemand.xsp?open&id=“+doc.$DocUNID.value
调用,如下所示:

javascript:importPackage(foo);
try {
    var url:java.lang.String = context.getUrl().toString();
    print(url);
    if (param.containsKey("id")) {
        var unid = param.get("id");
    } else {
        throw "No unid given";
    }
    XAgent.deleteDemand(unid);
} catch (e) {
    print(e);
}
我的实际代码在
foo
包中,但这似乎不相关,因为我甚至没有打印我的URL。我可以说,使用
window.location
生成和调用的URL工作正常,因此可以安全地假设问题在其他地方

我暗自怀疑,当从非XPage应用程序通过AJAX调用时,上下文可能没有任何意义,但我不确定

我不认为我的AJAX代码有什么特别之处,但这里只是以防万一。很长一段时间以来,它一直运转良好

function createAJAXRequest(retrievalURL, responseFunction) {
    if (window.ActiveXObject) {
        AJAXReq = new ActiveXObject("Microsoft.XMLHTTP");
    } else if (window.XMLHttpRequest) {
        AJAXReq = new XMLHttpRequest();
    }
    showHideIndicator("block")
    var currentTime = new Date()
    AJAXReq.open("GET", retrievalURL + "&z=" + currentTime.getTime());
    AJAXReq.onreadystatechange = eval(responseFunction);
    AJAXReq.send(null);
}

我不确定眼前的问题是什么,但作为一些故障排除步骤:

  • 结果URL只是服务器相对的,而不是在不同的服务器+协议组合上,对吗
  • 单击按钮时,您是否在浏览器的调试控制台上看到任何内容
  • 浏览器的“调试网络”面板中是否有该请求的条目

URL都在同一个应用程序中,因此这不是问题。浏览器调试控制台上没有任何内容。网络面板中没有任何内容。看起来我在
AJAXReq.onreadystatechange=eval(responseFunction)
行上得到了一个类型不匹配,但是responseFunction包含
closePopup('Frame\u Container')
,如果我只是在控制台中触发事件,它就可以正常工作。我要去google
onreadystatechange
看看是否有什么我不知道的。我已经成功地让代理开火了。看起来AJAX函数不够健壮。之后尝试关闭弹出窗口仍然存在问题,但这纯粹是JS问题。谢谢