2017-08-09 18 views
1

私はcURLリクエスト(私のMacで端末経由で作業する)をjQuery ajaxに取得しようとしていますが、私は400のBAD REQUESTを取得しています。私のコードに問題がある場合は、教えてください。 Oanda v20 APIが役立つ場合は、これを使用しようとしています。端子を介してcURLリクエストをcurl -d本体でajaxに変換する方法

cURLの(作動):

body=$(cat << EOF 
{ 
    "order": { 
    "units": "100", 
    "instrument": "EUR_USD", 
    "timeInForce": "FOK", 
    "type": "MARKET", 
    "positionFill": "DEFAULT" 
    } 
} 
EOF 
) 

curl \ 
    -X POST \ 
    -H "Content-Type: application/json" \ 
    -H "Authorization: Bearer <AUTHENTICATION TOKEN>" \ 
    -d "$body" \ 
    "https://api-fxpractice.oanda.com/v3/accounts/<ACCOUNT>/orders" 

jQueryのAJAX(動作しない):明らか

$.ajax({ 
    type: "POST", 
    url: 'https://api-fxpractice.oanda.com/v3/accounts/' + accountNumber + '/orders', 
    data: { 
     "order": { 
      "units": "10000", 
      "instrument": "EUR_USD", 
      "timeInForce": "FOK", 
      "type": "MARKET", 
      "positionFill": "DEFAULT" 
     } 
    }, 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Bearer " + auth) 
    }, success: function(data){ 

     console.log(data); 

     } 
}); 

authaccountNumber、等は、このコードの外で定義されている有効な変数です。

答えて

2

$.ajax({ 
    ... 
    contentType: 'application/json', 
    data: JSON.stringify({'order': { ... }}), 
    ... 
}); 
+0

ああ、あまりにも。 – SeanKendle

+1

@SeanKendleは答えの更新を確認します – Dekel

+0

うん、私はすぐにそれがAJAX要求のクロスドメインを送信しようとしたためにブロックされたと仮定しました。 – SeanKendle

1

同じ発信元ポリシーのためにブロックされている可能性があります。

JSONPで試しましたか?しかし、あなたは一見のページにテキスト形式のJavaScriptに誰かの口座番号を印刷していることを考えると、あなた自身からCURLリクエストを送信するために、より安全ではないでしょう

$.ajax({ 
    type: "POST", 
    dataType: "jsonp", 
    url: 'https://api-fxpractice.oanda.com/v3/accounts/' + accountNumber + '/orders', 
    data: { 
     "order": { 
      "units": "10000", 
      "instrument": "EUR_USD", 
      "timeInForce": "FOK", 
      "type": "MARKET", 
      "positionFill": "DEFAULT" 
     } 
    }, 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Authorization", "Bearer " + auth) 
    }, success: function(data){ 

     console.log(data); 

     } 
}); 

(あなたのAJAX呼び出しにdataType: "jsonp"を追加) PHPファイルですか? Ajaxを使用してローカルファイルを呼び出し、そこからCURLリクエストを送信し、APIのレスポンスを使用して独自のJSONレスポンスを作成してクライアント側に返します。リクエストのコンテンツタイプがapplication/jsonで、あなたがリクエストに追加し、コンテンツ自体が(JSON.stringifyを使用して)文字列として送信されることを確認する必要があり

+0

あなたは正しいですが、これはクライアントサイドの言語でのみ構築しようとしているアプリケーションです。それは私のためだけです。基本的には、クロムで動作するアプリを構築しようとしています。 –

関連する問題