我正在尝试使用DOJO AJAX向REST服务器发送请求,但是我得到一个空对象作为结果(控制台):
您已点击=单击clientX = 34,clientY = 13
从服务器加载的JSON:空
这是我的代码:
// JavaScript Document
// load requirements for declarative widgets in page content
require([ "dojo/parser",
"dojo/dom",
"dojo/domReady!",
"dijit/form/Button"
]);
// Start initializing
dojo.ready(function(){
dojo.connect (
aBut1,
"onClick",
function(e){
console.log('You CLICKED = ', e);
dojo.xhrGet({
// The URL of the request
url: "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/find",
// Handle the result as JSON data
handleAs: "json",
// content
content: {f:"json", searchText:"new", contains:"true", searchFields:"state_new", layers:"2", returnGeometry:"false" },
// The success handler
load: function(jsonData) {
// Create a local var to append content to
console.info("JSON loaded from server: ", jsonData);
},
// The error handler
error: function() {
console.log('JSON log Error');
}
});
});
}); // End dojo.ready
这是我要使用的REST网址:
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/find?searchText=new&contains=true&searchFields=state_name&sr=&layers=2&returnGeometry=false&f=json
我将此URL的结果保存在json文件中,AJAX会读取该文件并返回一个包含4个项目的对象。它没有使用REST URL。
谢谢
最佳答案
我相信您正在尝试使用dojo.xhrGet来访问其他域,而这是不能做到的。
局限性
dojo.xhrGet(以及同一行中的其他函数:dojo.xhrPost,
dojo.xhrDelete,dojo.xhrPut)受“同一域”安全性的约束
浏览器的政策。这意味着他们只能建立一个
连接回到为HTML页面提供服务的同一服务器。如果你
希望使用此API与除
发起您的页面,那么您将不得不在您的页面上使用代理
原始服务器并使其转发请求。唯一的
解决相同域限制的解决方案是使用
其他IO方法,例如dojo.io.script。
http://dojotoolkit.org/reference-guide/1.7/dojo/xhrGet.html
关于ajax - 如何使用DOJO AJAX和REST解析JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11472089/