survemonkey API get_survey_list возвращает ошибку, объект JSON не может быть декодирован

Я пытаюсь просто выполнить простой вызов 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 '{}' 

... что раздражает.


person matt lohkamp    schedule 07.03.2014    source источник
comment
Можете ли вы показать, что ваше приложение отправляет SurveyMonkey?   -  person Miles Cederman-Haysom    schedule 07.03.2014


Ответы (2)


Для всех конечных точек API SurveyMonkey требуется тело POST в формате JSON. Для get_survey_list допустимо отсутствие данных в теле POST. При этом API вернет массив со списком всех идентификаторов опросов для учетной записи, к которой вы обращаетесь. Однако вам все равно нужно будет отправить тело POST в формате JSON; он будет просто пуст ("{}").

В вашем примере это минимальное изменение должно обеспечить результаты, которые вы ищете:

$(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 Отправка json в веб-службу

Если вы хотите, чтобы название ваших опросов возвращалось вместе с их идентификаторами, вы можете сделать что-то вроде этого:

$(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);
        }
    });
});
person Tony Mayse    schedule 07.03.2014
comment
оооо да, да, это логично! Я отправлял параметры POST, но мне нужна была строковая версия объекта json. Попался. спасибо, я так и думал, что пропустил что-то подобное! - person matt lohkamp; 07.03.2014

Если вы получаете сообщение об ошибке: "Ожидаемый объект или значение" в "SurveyMonkey's 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);
               }
            });

если у вас есть какие-либо вопросы, обратитесь к команде API SurveyMonkey, они свяжутся с вами "[email protected]" https://developer.surveymonkey.com/

person John    schedule 29.05.2014
comment
Если вы получаете сообщение об ожидаемом объекте или значении в вашей ошибке в API SurveyMonkey, приведенный выше код работает для вас. - person John; 29.05.2014