ajax - 如何使用DOJO AJAX和REST解析JSON

标签 ajax json rest dojo

我正在尝试使用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/

相关文章:

javascript - 从表单检索数据(Codeigniter、AJAX)

php - 如何用 php 读取 json 解码数组?

web-services - 创建一对一的 RESTful API 关系

javascript - 仅在使用 ajax 上传文件时显示进度条

javascript - 未捕获的语法错误 : Unexpected token :

javascript - 如何解析以数字为键的JSON

php - 使用 REST API 的 PayPal 订单摘要 - - cURL 或 PHP

mysql - 如何使用带有双向实体的 RestFul Web 服务正确编写 Json?

php - Ajax 。根据Element ID通过$.ajax()函数加载json数据

ajax - 如何从 Sharepoint Web 部件进行跨域 AJAX POST 调用?