【问题标题】:How to parse JSON using DOJO AJAX and REST如何使用 DOJO AJAX 和 REST 解析 JSON
【发布时间】:2012-07-13 14:06:09
【问题描述】:

我正在尝试使用 DOJO AJAX 向 REST 服务器发送请求,但是我得到一个空对象作为结果(控制台):

您 CLICKED = 点击 clientX=34, clientY=13 从服务器加载的 JSON:null

这是我的代码:

// 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。

谢谢

【问题讨论】:

    标签: ajax json rest dojo


    【解决方案1】:

    我相信您正在尝试使用 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

    【讨论】:

      【解决方案2】:

      这没什么好说的。如果您使用 curl 向该 URL 发出请求会怎样?

      您使用的是 Dojo 1.7 吗?如果是这样,也许Ajax Quickstart docs 可以提供帮助(我直接链接到 AMD 风格,因为如果可以的话,这可能是你应该使用的)。还有更详细的docs on xhrGet

      【讨论】:

        猜你喜欢
        • 2014-01-26
        • 2016-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        相关资源
        最近更新 更多