我有一个iNotes List视图对象,它列出了我想要的文档以及相关的REST组件。在“OnSelectEntry”方法中,我有以下代码。nslXMLHttpRequest.send在XPiNC中使用时失败
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。
[更新]
我试图改变到道场呼叫代替如下。
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
您是否尝试过使用dojo ajax函数?你是否从非XPage调用XPage视图ajax? –
我尝试了Dojo调用,但是这给我一个不同的错误。我更新了文档。 – Herty
我想我现在明白了一点。你有nsf坐在本地,并且你试图向同一本地机器上的不同数据库发出ajax请求?除非你的计算机上有本地运行的多米诺骨牌服务器,否则这将不起作用。也许你可以使用ssjs来通过XPage局部刷新来表达你需要的数据,而不是做一个ajax请求? –