我有一個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請求? –