2013-07-29 2 views
0

я получил следующий URLКак POST запрос JSON в Междоменном в сенче прикосновении

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

и хотел бы POST следующего тела запроса 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 (Not Found) возникает ошибка и метод запроса GET вместо POST.

Может ли кто-нибудь помочь мне, как тело запроса POST (JSON) и получить ответ JSON из разных доменов?

Заранее спасибо

ответ

2

У вас есть четыре варианта:

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

  2. Reverse Proxy запрашивает через сервер на домене, что страница Сенча выполняется на:

    Сенча страницы (mydomain.com) ---> Веб-сервер (mydomain.com) ---> развития. avalara.net
    Сенча страница (mydomain.com) < --- веб-сервер (mydomain.com) < --- development.avalara.net

  3. Вы можете также POST форму в качестве правильной формы после действий, или POST-форму внутри скрытого iframe.

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

  4. Запустите приложение Сенча внутри PhoneGap/Кордову, который не блокирует междоменные запросы.

+0

Спасибо Neil, обратный прокси работал, и мы используем это какое-то время, но мы также хотим попробовать POSTing форму как регулярную, поэтому будет здорово, если вы предоставите некоторый пример кода. – RameshPasa

2

Вы не можете сделать JSON-P с запросами POST, JSON-P поддерживает только GET запросы. Ваши варианты:

  1. Используйте запрос GET с JSON-P
  2. Перемещение функций сервера на одном сервере приложение ST выполняется
  3. использовать что-то вроде Кордову и белый список сервер, который вы хотите использовать для ваши запросы AJAX POST, затем используйте Ext.Ajax.request.
Смежные вопросы