Dojo.request.post - 返回的承诺说 "rejected",但服务器似乎已经接受了请求
Dojo.request.post - returned promise says "rejected", but server seems to have accepted the request
我尝试通过 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: SAMEORIGIN
,Access-Control-Allow-Origin: *
也应该覆盖它(在我们设置 Access-Control-Allow-Origin
之前,它被拒绝了)。尽管如此,success/fail 函数中的 none 仍会执行。
我也尝试了 dojo/request/iframe
和 dojo/request/xhr
,但没有任何改变。除了 require 语句,我什么都没改变。
我应该如何获取和处理响应?我是 dojo
的新手,所以我想我误解了一些基本的东西。
编辑:问题出在我的 IIS 服务器上,它不信任我们的 arcgis 服务器。新的测试变量显示响应被拒绝。我认为 esri.config.defaults.io.corsEnabledServers.push
应该可以解决这个问题,但要么我用错了,要么它更复杂。
EDIT2:esri.config.defaults.io.corsEnabledServers.push
是我试图通过 esri/request
解决一些问题时的产物。我设法通过将 "X-Requested-With": null
添加到 headers 来迈出另一步。响应不再被拒绝,但我仍然无法执行回调函数。
已解决!我解决了我在编辑中提出的问题。剩下的问题是 uri 生成 - 我通过 Orchard 的 ViewBag 动态生成它,直到我将地址更改为另一个服务时我才注意到它是错误的。现在我使用静态 URI,一切正常。
我尝试通过 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: SAMEORIGIN
,Access-Control-Allow-Origin: *
也应该覆盖它(在我们设置 Access-Control-Allow-Origin
之前,它被拒绝了)。尽管如此,success/fail 函数中的 none 仍会执行。
我也尝试了 dojo/request/iframe
和 dojo/request/xhr
,但没有任何改变。除了 require 语句,我什么都没改变。
我应该如何获取和处理响应?我是 dojo
的新手,所以我想我误解了一些基本的东西。
编辑:问题出在我的 IIS 服务器上,它不信任我们的 arcgis 服务器。新的测试变量显示响应被拒绝。我认为 esri.config.defaults.io.corsEnabledServers.push
应该可以解决这个问题,但要么我用错了,要么它更复杂。
EDIT2:esri.config.defaults.io.corsEnabledServers.push
是我试图通过 esri/request
解决一些问题时的产物。我设法通过将 "X-Requested-With": null
添加到 headers 来迈出另一步。响应不再被拒绝,但我仍然无法执行回调函数。
已解决!我解决了我在编辑中提出的问题。剩下的问题是 uri 生成 - 我通过 Orchard 的 ViewBag 动态生成它,直到我将地址更改为另一个服务时我才注意到它是错误的。现在我使用静态 URI,一切正常。