2013-08-27 84 views
7

我使用curl命令如下摆脱托管远程服务器上德鲁伊集群中的数据,以JSON格式的Javascript等效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/cross-origin存在问题... – thriqon

+1

另外,contentType应该是JS应用程序中的'application/json' – thriqon

回答

4

卷曲能够发送和接收数据跨域到远程服务器,但不是用JavaScript出于安全原因的情况下

你的选择,我相信是

1)使用CORS设置在头远程服务器接受跨域调用(如果您有权访问服务器)也由thriqon指出

2)使用来自服务器的jsonP格式响应(同样,如果您已经控制了响应如何生成或者它已经以jsonP格式)

3)编写一个server-side proxy,充当您的呼叫和远程服务器之间的中介。然后,您可以在代理上格式化标题或响应,以使其能够响应跨域调用