我花了几天时间研究这个并且真的感到愚蠢。我一直致力于演示和样本,当我用我自己的网址在本地尝试时,它们永远不会工作。我有一个Web服务,它返回json中的结果,我只是基本上尝试使用dojo调用它,现在只是查看结果。我拿了搜索google示例,只是替换了url和参数。现在也许我仍然不了解基础知识,所以: - io.script.get vs xhrGet 如果使用跨域url,最好使用io.script.get?正确? 现在callbackparam是什么?这是在Web服务中调用的函数吗? 我的webservice网址如下: http://xxx.xxx.x.xxx/WcfServices/WcfInstance/Service1.svc/RetrievData?query=Word
当我使用以下代码时,我什么都没显示。
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);
以下是网络服务结果:
"{\"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\"},...
如果我认为这部分是正确的,那么至少我知道我有数据可以绑定到数据网格或图表。
答案 0 :(得分:3)
dojo.io.script.get适用于所有跨域请求。 xhrGet适用于相同的域请求。
dojo.io.script.get使用hack,结果需要jsonp或json填充。这将Web服务调用的响应包装在自执行函数中。函数名称是回调名称。这必须在调用之前连接,以便它知道在响应返回时要调用的函数。
所有论据都有详细记录http://dojotoolkit.org/reference-guide/1.7/dojo/io/script.html
我猜你的服务无法正常工作的原因是因为你编写了Web服务并且它没有处理jsonp。它没有将其响应包装在callbackparamname中。
您的结果应该类似于
callback({json});
回调是你在callbackParamName
中设置的任何内容 你也可以删除?来自你的网址,应该为你处理。