【问题标题】:How to use dojo/store/JsonRest to work ArcGIS Rest Service如何使用 dojo/store/JsonRest 工作 ArcGIS Rest Service
【发布时间】:2014-06-26 03:33:28
【问题描述】:

我在尝试连接到提供Arcgis Javascript API docs 的示例休息服务时收到以下错误。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://bcgphp' is therefore not allowed access.

按照dojo docs,我设置了我的道场/商店,如下所示。

var jsonStore = new JsonRest({
      target: "//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/"
    });

jsonStore.get(5);

我还尝试为每个 dojo docs 传递一些标头,它返回与上面的代码相同的错误。

var jsonStore = new JsonRest({
      target: "//sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/",
      headers: {'X-Requested-With': 'XMLHttpRequest'}
    });

jsonStore.get(5);

当我使用 Arcgis Javascript 进行查询时,我可以使用 demo 中提供的以下代码发出此请求,这不会导致任何跨域问题。

var queryTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");

    var query = new Query();
    query.returnGeometry = false;
    query.outFields = [
      "SQMI", "STATE_NAME", "STATE_FIPS", "SUB_REGION", "STATE_ABBR",
      "POP2000", "POP2007", "POP00_SQMI", "POP07_SQMI", "HOUSEHOLDS",
      "MALES", "FEMALES", "WHITE", "BLACK", "AMERI_ES", "ASIAN", "OTHER",
      "HISPANIC", "AGE_UNDER5", "AGE_5_17", "AGE_18_21", "AGE_22_29",
      "AGE_30_39", "AGE_40_49", "AGE_50_64", "AGE_65_UP"
    ];


    queryTask.execute(query, showResults);

    function showResults (results) {
      console.log(results);
    }

如果可能的话,我真的很想使用 dojo.store,这样我就可以使用 Dojo 提供的 MVC technique 来构建我的应用程序

【问题讨论】:

    标签: javascript cross-domain arcgis dojo arcgis-js-api


    【解决方案1】:

    dojo/store/JsonRest 期望服务器遵守特定协议,但 ArcGIS 服务有其 own specification。请参阅JsonRest docs 的实施 REST 服务器部分。因此,无论有任何 CORS 问题,我认为都不可能将 dojo/store/JsonRest 指向 ArcGIS Online 服务,而无需将其包装在一些符合 JsonRest 商店期望的协议的 RESTful 服务中。

    根据您的服务中的记录数量以及您需要多久回写一次服务器,您可以尝试在页面加载时使用QueryTask 将您需要的所有记录拉入dojo/store/Memory 存储。我参与了一个成功使用该技术的项目。

    【讨论】:

    • 好吧,我有点想这就是问题所在。我开始走上道场/商店/记忆之路。
    猜你喜欢
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2014-03-07
    • 2011-12-29
    相关资源
    最近更新 更多