0

次のURLを取得しました

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

次の 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) エラーが発生し、リクエスト メソッドは POST ではなく GET です。

リクエストボディ(JSON)をPOSTし、別のドメインからJSONレスポンスを取得する方法を教えてもらえますか?

前もって感謝します

4

2 に答える 2

2

次の 4 つのオプションがあります。

  1. CORSを使用します。development.avalara.net は、サーバー上で CORS をセットアップし、Sencha ページが実行されているドメインを許可する必要があります。

  2. Sencha ページが実行されているドメイン上のサーバーを経由するリバース プロキシ リクエスト:

    Sencha ページ (mydomain.com) ---> Web サーバー (mydomain.com) ---> development.avalara.net
    Sencha ページ (mydomain.com) <--- Web サーバー (mydomain.com) <--- development .avalara.net

  3. 通常のフォーム投稿アクションとしてフォームを投稿するか、非表示の iframe 内でフォームを投稿することもできます。

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

  4. クロスドメイン リクエストをブロックしない phonegap/cordova 内で Sencha アプリを実行します。

于 2013-07-29T17:29:43.597 に答える
2

POST リクエストで JSON-P を実行することはできません。JSON-P は GET リクエストのみをサポートします。オプションは次のとおりです。

  1. JSON-P で GET リクエストを使用する
  2. サーバー機能を、ST アプリが実行されている同じサーバーに移動します。
  3. Cordova のようなものを使用し、AJAX POST 要求に使用するサーバーをホワイトリストに登録してから、Ext.Ajax.request.
于 2013-07-29T14:23:25.013 に答える