Xpages 通过AJAX从传统Domino web应用程序调用XAgent
我创建了一个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
window.location
可以正常工作,但我无法通过AJAX让它工作。这个代理是从弹出div上的delete按钮调用的,所以我不想在XAgent中写入responseStream,我更愿意在完成后运行代理并通过javascript关闭弹出窗口
我的XAgent由URLdoc.$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只是服务器相对的,而不是在不同的服务器+协议组合上,对吗
- 单击按钮时,您是否在浏览器的调试控制台上看到任何内容
- 浏览器的“调试网络”面板中是否有该请求的条目
AJAXReq.onreadystatechange=eval(responseFunction)
行上得到了一个类型不匹配,但是responseFunction包含closePopup('Frame\u Container')
,如果我只是在控制台中触发事件,它就可以正常工作。我要去googleonreadystatechange
看看是否有什么我不知道的。我已经成功地让代理开火了。看起来AJAX函数不够健壮。之后尝试关闭弹出窗口仍然存在问题,但这纯粹是JS问题。谢谢