我想通过 post json 数据发送。
我阅读了 API 文档(在异步世界中工作和API 文档 IOAsyncRequestCfg),他们说应该这样发送:
/* called when the template has been successfully rendered. */
$viewReady : function(){
console.log("$viewReady");
var pnr = this.data.pnr;
var names = this.data.names;
var namesResults = [];
if (names.length > 0)
{
var monto = this.callAjaxService('https://localhost/Service1.asmx/SetNames?jsonp=false', names);//REST service
}
},
对服务的调用是:
callAjaxService : function (urlString, data) {
console.log("callAjaxService");
console.log(urlString);
console.log(JSON.stringify(data));
aria.core.IO.asyncRequest({
url : urlString,
timeout : 10000,
async: true,
method: "POST",
data: JSON.stringify(data),
contentType: "application/json",
callback : {
fn : this.onSuccessId,
scope : this,
onerror : this.onError,
onerrorScope : this
}
});
},
我认为它没有离开 aria 模板的请求,请求永远不会到达服务器。因为我得到的回应是:
错误:“错误” 错误
文本:“错误 #2048” 错误
类型:“安全错误” reqId:249
响应文本:“未定义”
状态:0 状态
文本:“xdr:错误”
我正在 IIS 上调试服务,但它永远不会到达那里。我已经用其他客户端测试了该服务并且它有效。
新方法,一位合伙人告诉我:
启用 CORS 后,您可以使用基于 XHR 的常规传输。为了告诉 Aria 模板这样做,您可以在任何跨域请求之前执行此代码:
aria.core.IO.updateTransports({ 'crossDomain': 'aria.core.transport.XHR' });
此外,由于 CORS 控制客户端可以将哪些 HTTP 标头添加到请求中的方式,您还应该执行以下代码:
aria.core.IO.useXHRHeader = false;
将这两行添加到请求中可以使请求到达服务器。但是,现在我们得到了服务的响应
error:"13030"
reqId: 255
responseText:""
responseXML:null
status:13030
url:"https://localhost/Service1.asmx/GetNames?jsonp=true&callback=pol
服务器的响应是一个 JSON 结构。我们正在研究如何获得正确的回应。