Как да ПУБЛИКУВАТЕ JSON заявка в междудомейн в sencha touch

Имам следния URL адрес

https://development.avalara.net/1.0/tax/get

и би искал да ПУБЛИКУВА следното тяло на JSON заявка

{ 
"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 (не е намерен) и методът на заявка е GET вместо POST.

Може ли някой да ми помогне как POST тяло на заявка (JSON) и получен JSON отговор от различен домейн?

Благодаря предварително


person RameshPasa    schedule 29.07.2013    source източник


Отговори (2)


Имате четири възможности:

  1. Използвайте CORS. development.avalara.net ще трябва да настрои CORS на сървъра и да разреши домейна, на който работи страницата Sencha.

  2. Заявки за обратен прокси през сървър в домейна, на който работи страницата Sencha:

    Страница Sencha (mydomain.com) ---› Уеб сървър (mydomain.com) ---› development.avalara.net
    Страница Sencha (mydomain.com) ‹--- Уеб сървър (mydomain.com) ‹ --- development.avalara.net

  3. Можете също така да ПУБЛИКУВАТЕ формуляра като обикновено действие за публикуване на формуляр или да ПУБЛИКУВАТЕ формуляра в скрит iframe.

    http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.Basic-cfg-standardSubmit

  4. Стартирайте приложението Sencha в phonegap/cordova, което не блокира заявки между домейни.

person Neil McGuigan    schedule 29.07.2013
comment
Благодаря, Нийл, обратният прокси проработи и го използваме от известно време, но също така искаме да изпробваме POSTing формуляра като обикновен, така че ще бъде чудесно, ако предоставите примерен код. - person RameshPasa; 05.09.2013

Не можете да правите JSON-P с POST заявки, JSON-P поддържа само GET заявки. Вашите опции са:

  1. Използвайте GET заявка с JSON-P
  2. Преместете функционалността на сървъра на същия сървър, на който работи вашето ST приложение
  3. Използвайте нещо като Cordova и избройте сървъра, който искате да използвате за вашите AJAX POST заявки, и след това използвайте Ext.Ajax.request.
person kevhender    schedule 29.07.2013