我有以下网址
并希望在JSON请求正文后面进行POST
{
"DocDate": "2011-05-11",
"CustomerCode": "CUST1",
"Addresses":
[
{
"AddressCode": "1",
"Line1": "435 Ericksen Avenue Northeast",
"Line2": "#250",
"PostalCode": "98110"
}
]
}
然后将给出JSON响应
{
"DocCode": "78b28084-8d9a-477c-9f26-afab1c0c3877",
"DocDate": "2011-05-11",
"Timestamp": "2011-05-11 04:26:41",
"TotalAmount": 10,
"TotalDiscount": 0,
"TotalExemption": 0,
"TotalTaxable": 10,
"TotalTax": 0.86,
“TotalTaxCalculated”: 0.86,
"TaxDate": "2011-05-11",
.......
}
我尝试过使用
Ext.Ajax.request
但得到错误
Origin http://localhost is not allowed by Access-Control-Allow-Origin.
可能是因为有不同的域名。
所以,然后我尝试使用JSONP
Ext.data.JsonP.request
(
{
url: 'https://development.avalara.net/1.0/tax/get',
callbackName: 'test',
method: 'POST',
jsonData: '{"DocDate": "2011-05-11", "CustomerCode": "CUST1", "Addresses": [ { "AddressCode": "1", "Line1": "435 Ericksen Avenue Northeast","Line2": "#250", "PostalCode": "98110" } ] }' ,
success: function(response) {
//do some successful stuff
Ext.Msg.alert(response);
},
failure: function(response) {
//complain
Ext.Msg.alert('fail');
}
});
但遇到URL 404(Not Found)错误,请求方法是GET而不是POST。
任何人都可以帮我解决POST请求体(JSON)和来自不同域的JSON响应吗?
提前致谢
答案 0 :(得分:2)
您不能使用POST请求执行JSON-P,JSON-P仅支持GET请求。您的选择是:
Ext.Ajax.request
。答案 1 :(得分:2)
您有四种选择:
使用CORS。 development.avalara.net需要在服务器上设置CORS并允许运行Sencha页面的域。
通过运行Sencha页面的域上的服务器反向代理请求:
Sencha页面(mydomain.com)---> Web服务器(mydomain.com)---> development.avalara.net
Sencha页面(mydomain.com)< --- Web服务器(mydomain.com)< --- development.avalara.net
您还可以将表单作为常规表单发布操作发布,或者将表单POST在隐藏的iframe中。
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.Basic-cfg-standardSubmit
在phonegap / cordova中运行Sencha应用程序,该应用程序不会阻止跨域请求。