1

我正在尝试做一个简单的 get_survey_list 调用 - 但它总是返回一个错误:“无法解码 JSON 对象:第 1 行第 0 列(字符 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 '{}' 

......这很烦人。

4

2 回答 2

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);
        }
    });
});
于 2014-03-07T17:03:21.560 回答
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/

于 2014-05-29T11:03:31.150 回答