Paraimpu HTTP POST请求

时间:2012-10-08 03:56:15

标签: javascript jquery ajax cors

我正在尝试从我的Jquery移动应用程序(托管在Amazon S3上)发出一个http POST请求到“http://paraimpu.crs4.it/data/new”,以便将数据插入Paraimpu网站上的传感器。这是我正在提出的要求:

        data = "Test";
        valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
        $.ajax({
            url: "http://paraimpu.crs4.it/data/new",
            type: "POST",
            data: valueToSend,
            dataType: "json",
            crossDomain: true,
            contentType:"application/json",
            success: function(){
            alert('Success');
        }
        });

我一直在

  

XMLHttpRequest无法加载http://paraimpu.crs4.it/data/new。起源   不允许使用“http://webappz.s3-website-us-east-1.amazonaws.com”   访问控制允许来源。

我知道这是因为跨域政策,但我该如何解决这个问题呢? paraimpu页面上的说明非常含糊,只是说:

  

将执行HTTP POST的新传感器数据推送到:

     

http://paraimpu.crs4.it/data/new

     

内容如:{“token”:“c9d1cee6-da40-4e97-afc8-209045786b04”,   “content-type”:“text / plain”,“data”:RAW DATA}

1 个答案:

答案 0 :(得分:0)

data = "Test";
valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
    $.ajax({
        url: "http://paraimpu.crs4.it/data/new",
        type: "POST",
        data: valueToSend,
        dataType: "jsonp",    //set datatype to jsonp
        crossDomain: true,
        jsonp: false,
        contentType:"application/json",
        success: function(){
            alert('Success');
        }
    });​

这些是您缺少的部分:

dataType: "jsonp":您期望从服务器返回的数据类型。 “jsonp”,使用JSONP加载JSON块。添加额外的“?callback =?”到URL的末尾以指定回调。通过将查询字符串参数“_ = [TIMESTAMP]”附加到URL来禁用缓存,除非缓存选项设置为true。

jsonp: false:覆盖jsonp请求中的回调函数名称。在'callback =?'中将使用此值代替'callback' url中查询字符串的一部分。所以{jsonp:'onJSONPLoad'}会导致'onJSONPLoad =?'传递给服务器。从jQuery 1.5开始,将jsonp选项设置为false可防止jQuery将“?callback”字符串添加到URL或尝试使用“=?”转型。在这种情况下,您还应该显式设置jsonpCallback设置。例如,{jsonp:false,jsonpCallback:“callbackName”}

有关此内容的更多信息:jQuery.ajax()