2013-08-27 9 views
7

私はJavascriptの同等

JSON形式で、リモートサーバー上でホストされているドルイドクラスタからデータを取得するためにcurlコマンドを下回る
curl -X POST "http://www.myserverIP.com:8080/druid/v2/" -H 'content-type: application/json' -d '{"queryType": "groupBy","dataSource": "twsample","granularity": "none","dimensions": ["created_at"],"aggregations": [{"type": "count", "name": "tweetcount"}],"intervals": ["2013-08-06T11:30:00.000Z/2020-08-07T11:40:00.000Z"]}' 

を使用していますが、私がどうなる同等のJavaScriptのメソッドを作成することはできませんよ同じこと、私はこれを行うには以下のコードを使用しています。

function sendCurlRequest(){ 
    var json_data = { 
       "queryType": "groupBy", 
       "dataSource": "twsample", 
       "granularity": "none", 
       "dimensions": ["created_at"], 
       "aggregations": [ 
        {"type": "count", "name": "tweetcount"} 
       ], 
       "intervals": ["2013-08-06T11:30:00.000Z/2020-08-07T11:40:00.000Z"] 
      }; 
    $.ajax({ 
     cache : false,  
    type: 'POST', 
    crossDomain:true, 
    url: 'http://www.myserverIP:8080/druid/v2/', 
    data:json_data, 
    //dataType: "jsonp", 
    contentType:"application/jsonp", 
    success: function(data){ 
      alert(data); 
     var pubResults = data;  
    }, 
    error: function(data){ 
     alert("ERROR RESPONSE FROM DRUID SERVER : "+JSON.stringify(data)); 
    }, 
    complete: function(data){ 
     console.log("call completed"); 
    } 
    }); 
} 

助けてください。

+1

エラーメッセージは何ですか?何かありますか?私はCORS /クロスオリジンの問題を疑う... – thriqon

+1

また、contentTypeはJS部分の 'application/json'でなければならない – thriqon

答えて

4

カールがリモートサーバーへのデータのクロスドメインを送受信することが可能であるが、それは私が

1であると考えて

あなたのオプション)のヘッダーを設定するCORSを使用して、セキュリティ上の理由のためのjavascriptの場合ではありませんリモートサーバーがクロスドメインコールを受け入れる場合(サーバーにアクセスできない場合)

2)サーバーからのjsonP形式の応答を使用します(応答が生成される方法、 jsonP形式)

3)あなたの呼び出しとリモートサーバーの間の仲介者として機能するserver-side proxyを書きます。プロキシのヘッダーまたは応答をフォーマットして、クロスドメインコールに応答できるようにします。