我想通过post json数据发送。
我阅读了API文档(working in an asynchronous world和API doc 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模板中获取请求永远不会到达服务器。因为我得到的回应是:
错误: “错误”
errorText:“错误#2048”
ERRORTYPE: “的securityError” REQID:249
responseText的: “未定义”
状态: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结构。我们正在研究如何做出正确的回应。
答案 0 :(得分:0)
也许这有帮助
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="charset=utf-8" />
<title>Hello World</title>
<script type="text/javascript" src="http://cdn.ariatemplates.com/atlatest.js"></script>
</head>
<body>
<div id="myContainer"></div>
<script type="text/javascript">
aria.core.IO.asyncRequest({
url : 'http://httpbin.org/post',
method : "post",
callback : {
fn : function (response, args) {
console.log('response:', response);
},
scope : this
}
});
</script>
</body>
</html>
答案 1 :(得分:0)
新方法是解决方案。一位合伙人告诉我:
启用CORS后,您可以使用基于XHR的常规传输。 为了告诉Aria模板,您可以执行此代码 在任何跨域请求之前:
aria.core.IO.updateTransports({&#39; crossDomain&#39;: &#39; aria.core.transport.XHR&#39; });
此外,由于CORS用于控制HTTP标头的方式 添加到客户端的请求中,您还应该执行以下代码:
aria.core.IO.useXHRHeader = false;
将这两行添加到请求中使其正常工作。