1

単純な 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 '{}' 

…迷惑です。

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 に答える