我有一个 iNotes 列表视图对象,其中列出了我想要的文档以及相关的 REST 组件。在“OnSelectEntry”方法中,我有以下代码。
var unid = items[0]["@unid"];
var myUrl = "test.nsf/main.xsp/docPathInfo/unid/" + unid;
var h;
if (window.XMLHttpRequest){
h = new XMLHttpRequest();
} else {
h = new ActiveXObject("Microsoft.XMLHTTP");
}
h.onreadystatechange=function() {
if (h.readyState == 4 && h.status == 200) {
var myObject = eval('(' + h.responseText + ')');
var result = dojo.byId("#{id:inputText1}");
result.value = myObject.field1 + " " + myObject.field2;
}
}
h.open("GET",myUrl,false);
h.send();
如果 NSF 托管在服务器上,则此代码可以完美运行,但如果我将它放在本地,则它会失败并显示以下内容:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nslXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://127.0.0.1:50113/xsp/.ibmxspres/.mini/dojo/.en/@Wc&@Eab&@Eya&@lu.js :: anonymous ::
我需要这个在客户端上工作。这是在客户端回电的正确方法吗?
我也尝试过更改 ACL 访问权限,但似乎没有帮助。我也尝试过使用绝对 URL 而不是相对 URL。
[更新]
我尝试更改为 Dojo 调用,如下所示。
var x;
var myCallback = function(data, ioArgs)
{
var myObject = eval('(' + data + ')');
var result = dojo.byId("#{id:inputText1}");
result.value = myObject.field1 + " " + myObject.field2;
}
dojo.xhr("Get", {
url: myUrl,
handleAs: "text",
timeout: 10000,
load: myCallback
});
当我运行此代码时,它在服务器上运行良好,但当我在客户端运行它时,它不起作用。我在 XPages.log 文件中收到以下消息。
1/10/13 10:45 AM: Internal warning: Check access being called outside of a request
1/10/13 10:45 AM: Internal warning: Check access being called without a valid session/database