surveymonkey api get_survey_list返回错误,“无法解码JSON对象”

时间:2014-03-07 01:38:16

标签: javascript jquery ajax http surveymonkey

我正在尝试执行一个简单的get_survey_list调用 - 但它总是返回一个错误:“没有JSON对象可以被解码:第1行第0列(char 0)”

这是代码:(用我的api密钥和oauth代码审查)

$(function(){
    $.ajax({
        url:'https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=XXXXXXXX',
        type:'post',
        contentType:'application/json',
        dataType:'json',
        headers:{
            Authorization:'bearer XXXXXXXXXXXXXXXX',
            'Content-Type':'application/json',
        },
        complete:function(jqXHR, textStatus){
            console.log(jqXHR.responseJSON);
        }
    });
});

我错过了什么吗?当我尝试使用CURLing时,它可以工作:

curl -H 'Authorization:bearer XXXXXXXXXXX' -H 'Content-Type: application/json' https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=XXXXXXXXX --data-binary '{}' 

......这很烦人。

2 个答案:

答案 0 :(得分:4)

SurveyMonkey的API端点都需要JSON编码的POST主体。对于get_survey_list,它有效,因为POST主体中不包含任何数据。执行此操作时,API将返回一个列表,其中列出了您正在访问的帐户的所有调查ID。但是,您仍然需要发送一个JSON编码的POST主体;它只是空的(“{}”)。

在您的示例中,此最小更改应提供您正在查找的结果:

$(function(){
    $.ajax({
        url:'https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=XXXXXXXX',
        type:'post',
        contentType:'application/json',
        dataType:'json',
        data: '{}'.
        headers:{
            Authorization:'bearer XXXXXXXXXXXXXXXX',
            'Content-Type':'application/json',
        },
        complete:function(jqXHR, textStatus){
            console.log(jqXHR.responseJSON);
        }
    });
});

通常,您将POST主体构建为javascript对象,并使用JSON.stringify()对它们进行编码。这篇文章可能有助于理解该过程:Jquery Ajax Posting json to webservice

如果您希望查看调查的标题及其ID,则可以执行以下操作:

$(function(){
    $.ajax({
        url:'https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=XXXXXXXX',
        type:'post',
        contentType:'application/json',
        dataType:'json',
        data: JSON.stringify({fields:"title"}),
        headers:{
            Authorization:'bearer XXXXXXXXXXXXXXXX',
            'Content-Type':'application/json',
        },
        complete:function(jqXHR, textStatus){
            console.log(jqXHR.responseJSON);
        }
    });
});

答案 1 :(得分:0)

如果您收到错误消息:" 预期对象或值 " " SurveyMonkey的API" 中的消息此代码正常工作

               $.ajax({
                url: "https://api.surveymonkey.net/v2/surveys/get_survey_details?api_key=xxxxxxxxxxxxx",
                type: "post",
                contentType: "application/json;",
                dataType: "json",
                data: JSON.stringify({ "survey_id": "xxxxxxxx" }), 
               headers: {
                Authorization: "bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.J=",
                "Content-Type": "application/json"

               },
                complete: function (jqXHR, textStatus, body) {
                console.log(jqXHR.responseJSON);
               }
            });

如果您有任何问题请咨询SurveyMonkey的API团队,他们会与您联系" support@surveymonkey.com" https://developer.surveymonkey.com/