Dojo.request.post-返回的promise说"拒绝”;,但服务器似乎已经接受了请求

Dojo.request.post - returned promise says "rejected", but server seems to have accepted the request

本文关键字:服务器 请求 返回 post- request promise 拒绝 quot Dojo      更新时间:2023-09-26

我试图通过ArcGIS JavaScript API和dojo/request将功能添加到ArcGIS功能服务中。已经有人向我介绍了如何包含请求模块,我从服务器得到了一些响应,但在探索了几天不同的解决方案后,我没能执行回调函数。我的代码:

esri.config.defaults.io.corsEnabledServers.push("remotearcgisserver.com");
var uri = "http:/remotearcgisserver.com/arcgis/rest/services/foo/bar/FeatureServer/0/addFeatures"
//no error here, so I suppose the dojo/request is requested correctly
var promise = require('dojo/request').post(uri, {
        data: "features=" + _json + "&rollbackOnFailure=true&f=pjson", handleAs: "json", timeout: 2000,
        headers: {
            "X-Requested-With": null
        }
});
var res = promise.isResolved();
var rej = promise.isRejected();
var ful = promise.isFulfilled();
var can = promise.isCanceled();
var respres = promise.response.isResolved();
var resprej = promise.response.isRejected();
var respful = promise.response.isFulfilled();
var respcan = promise.response.isCanceled();
promise.response.then(
    //success
    function (response) {
        //something
    },
    //fail
    function (error) {
        //something different
    }
);

所有测试变量都为"false"(未解析、未拒绝、未完成和未取消)。该服务没有密码,即使它有X-Frame-Options: SAMEORIGINAccess-Control-Allow-Origin: *也应该覆盖它(在我们设置Access-Control-Allow-Origin之前,它被拒绝了)。尽管如此,成功/失败函数都不会被执行。

我也试过dojo/request/iframedojo/request/xhr,但没有任何变化。除了require语句,我什么都没改。

我应该如何获取和处理响应?我是dojo的新手,所以我想我误解了一些基本的东西。

编辑:问题出在我的IIS服务器上,它不信任我们的arcgis服务器。新的测试变量表明响应被拒绝。我认为esri.config.defaults.io.corsEnabledServers.push应该处理这个问题,但要么我用错了,要么它更复杂。

第2版:esri.config.defaults.io.corsEnabledServers.push是我试图通过esri/request解决一些问题时的产物。我设法又迈出了一步,将"X-Requested-With": null添加到了标头中。响应不再被拒绝,但我仍然无法执行回调函数。

已解决!我解决了我在编辑中提出的问题。剩下的问题是uri生成——我通过Orchard的ViewBag动态生成,直到我将地址更改为另一个服务,我才注意到它是错误的。现在我使用了一个静态URI,一切都正常。