我正在尝试执行一个简单的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 '{}'
......这很烦人。
答案 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/