我已經花了幾天的時間在這方面工作,並且真的很笨拙。我一直在研究演示和樣本,當我在本地嘗試使用自己的url時,這些演示和樣本從不工作。我有一個web服務返回json的結果,我只是試圖用dojo調用它,現在只是查看結果。我採取了搜索谷歌的例子,只是取代了網址和參數。現在,我可能仍然不明白以下基本知識: - io.script.get vs xhrGet 如果使用跨域URL,最好使用io.script.get?正確? 現在什麼是callbackparam?這是在web服務中調用的函數嗎? 我的web服務url如下: http://xxx.xxx.x.xxx/WcfServices/WcfInstance/Service1.svc/RetrievData?query=Worddojo.io.script.get vs dojo.xhrGet
當我使用下面的代碼時,我什麼也沒有顯示。
function searchGoogle() {
// Look up the node we'll stick the text under.
var targetNode = dojo.byId("rules");
// The parameters to pass to xhrGet, the url, how to handle it, and the callbacks.
var jsonpArgs = {
url: "http://xxx.xxx.x.xxx/WcfServices/WcfInstance/Service1.svc/RetrieveData?",
callbackParamName: "callback",
content: {
query:"dojowords"
},
load: function (data) {
// Set the data from the search into the viewbox in nicely formatted JSON
targetNode.innerHTML = "<pre>" + dojo.toJson(data, true) + "</pre>";
},
error: function (error) {
targetNode.innerHTML = "An unexpected error occurred: " + error;
}
};
dojo.io.script.get(jsonpArgs);
}
dojo.ready(searchGoogle);
這裏是WebService的結果是什麼樣子:
"{\"rules\":[{\"value\":\"AllState\"},
{\"value\":\"Cidade de Goa beach\"},{\"value\":\"Euro 2012\"},
{\"value\":\"Euro2012\"},{\"value\":\"European&Championship\"},
{\"value\":\"Holiday Inn Resort\"},
{\"value\":\"Holiday Inn Resort goa\"},
{\"value\":\"Hotel Goa\"},{\"value\":\"Hyatt Goa\"},{\"value\":\"I buy car\"},...
如果我得到這部分正確的,那麼至少我知道我有我就可以綁定到DataGrid或圖表數據。
感謝您的回覆。如果Web應用程序和Web服務託管在同一臺服務器上,那麼我可以使用xhrGet?或者當客戶端嘗試從他們的機器運行它,但是在我們的LAN中時,這會成爲問題。其次,只是包裝我的迴應就像這個callbackfunction({「{\」rules \「:[{\」value \「:\」AllState \「}, {\」value \「:\」Cidade de Goa beach \ 「},{\」value \「:\」Euro 2012 \「}]}儘可能的回調。 – vbNewbie
@vbNewbie沒有理由使用xhrGet,如果您正在向域a發出請求。客戶端是分佈式的並不重要,只要它是 - > a而不是 - > b那麼xhrGet就可以了,如果你切換到dojo.xhrGet,你需要添加handleAs:'json'閱讀參考指南,你也可以讓你的服務檢測回調參數,並決定是否包裝響應或不靈活,我不會硬編碼值,你也可以使用xhrGet獲得更多的功能,因爲它支持,而不是cross domain hack。 – Steve
非常感謝你的詳細解釋。我不想轟炸你,但是當我嘗試dojo.xhr時,它一直告訴我不能oad myurl。我也從同一臺服務器運行它,IE錯誤是拒絕訪問。所以最後一個問題是,xhrGET是從遠程服務器獲取數據的最佳選擇,例如。一個用於在Web應用程序中填充dojo小部件的sql數據庫。我會做進一步的研究並從這裏抽樣。再次感謝。 – vbNewbie