我的开发环境包括用于快速Javascript开发的Apache HTTP服务器和提供JSON REST API的应用服务器(WebSphere)。当然,Access-Control-Allow-Origin
设置为(*)。
以下代码导致错误:
xhr.post({
url: "http://localhost:8080/rest-sample/rest/test/list",
handleAs: "json",
load: onload
});
RequestError: Unable to load
http://localhost:8080/rest-sample/rest/test/list status: 0
ErrorCtor()create.js (Zeile 13) onError()xhr.js (Zeile 80)
var err = Error.call(this, message),
抛出JavaScript错误而不是发送AJAX请求。但是,在同一时间,以下jQuery snipplet功能完美无缺:
var url = "http://localhost:8080/rest-sample/rest/test/list"
$.post(url, {}, onLoad, 'json')
我的问题是:我做错了什么?如何使用Dojo将AJAX请求发送到其他服务器?
我正在使用 dojo 1.9
答案 0 :(得分:1)
我认为不再支持xhr.post,我建议使用dojo / request,或至少dojo / request / xhr
require(["dojo/request/xhr"], function(xhr){
xhr("http://localhost/rest-sample/rest/test/list", {
handleAs: "json",
method: "POST"
}).then(function(data){
// Do something with the handled data
}, function(err){
// Handle the error condition
}, function(evt){
// Handle a progress event from the request if the
// browser supports XHR2
});
});
如果是Cross origin问题,我建议在http服务器上使用ReverseProxy。
将此添加到您的httpd.conf
ProxyPass /rest-sample/ http://localhost:8080/rest-sample/
答案 1 :(得分:1)
您的服务器还必须发送Access-Control-Allow-Headers: x-requested-with
。