2015-12-03 2 views
1

Я пытаюсь начать использовать SurveyMonkey api.Начало работы с SurveyMonkey api

$.ajax({ 
     method:"POST", 
     url:"https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key="+apiKey, 
     headers:{ 
      "Authorization": "bearer "+token, 
      "Content-Type": "application/json" 
     }, 
     body:{ 
      "fields": [ 
      "title", 
      "analysis_url", 
      "preview_url", 
      "date_created", 
      "date_modified", 
      "question_count", 
      "num_responses" 
      ] 
     } 
    }) 
    .success(createListPicker) 
    .error(handleError) 

Я получаю сообщение об ошибке:

XMLHttpRequest не может загрузить https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=bs579cpsb4mnvn4vh6uqvp2m. Запрос был перенаправлен на 'https://api.surveymonkey.net/v2/surveys/get_survey_list/?api_key=bs579cpsb4mnvn4vh6uqvp2m', , который запрещен для запросов на перекрестный поиск, требующих предполетной проверки.

Я просматриваю несколько разных страниц о CORS, но не могу понять, что представляет собой следующий шаг. Любой совет?

верчение продолжает Я продолжал пытаться выяснить JSONP - но кажется, что это can't handle the authorization headers

Я также попытался использовать FormData включалась дополнительные разрешения и параметры following this thread. Он подключился бы к api, но потом сказал, что не может найти токен авторизации.

Я получаю ближе со следующим кодом:

$.ajax({ 
     type:"POST", 
     url:"https://api.surveymonkey.net/v2/surveys/get_survey_list/?api_key="+apiKey, 
     beforeSend: function(xhr) { 
         xhr.setRequestHeader('Authorization','bearer ' + token); 
         xhr.setRequestHeader('Content-Type','application/json'); 
        } 
    }) 
    .success(createListPicker) 
    .error(handleError) 

что на самом деле связывает и подтверждает подлинность, но затем она возвращает статус 3 «ожидаемый объект или значение». Status codes documented here.

+0

Вы пытались обновить ваш запрос URL для к которому вы перенаправляетесь? (У него есть дополнительные '/' перед '?') - может быть, это просто небольшое недоразумение в документах, что приводит к перенаправлению, которое впоследствии не работает? –

+0

Для выполнения запроса CORS вам необходимо использовать jsonP. http://stackoverflow.com/questions/5943630/basic-example-of-using-ajax-with-jsonp – sudheer

+0

Джеймс Торп, я просто попробовал это, и у меня ошибка 404 не найдена. – Rothrock

ответ

1

Итак, после того, как я наткнулся на это целый день, я, наконец, получил его работу. Я использовал пост jqueries с помощью beforeSend для проверки подлинности и JSON.stringify() для обработки тела запроса. Окончательный код выглядит следующим образом:

var obj = { 
      "fields": [ 
      "title", 
      "date_created", 
      "date_modified", 
      "num_responses" 
      ], 
      "start_date":"2015-12-01 00:00:00" 
     } 

    $.ajax({ 
     type:"POST", 
     dataType:"json", 
     contentType:'application/json; charset=utf-8', 
     url:"https://api.surveymonkey.net/v2/surveys/get_survey_list/?api_key="+apiKey, 
     data:JSON.stringify(obj), 
     beforeSend: function(xhr) { 
         xhr.setRequestHeader('Authorization','bearer ' + token); 
         xhr.setRequestHeader('Content-Type','application/json'); 
        } 
    }) 
    .success(createListPicker) 
    .error(handleError) 

Теперь мне нужно работать, как долго длится проверка подлинности и что происходит, когда я пытаюсь перейти к конкретной информации ....

+0

Не подвергает ли ваш токен авторизации стороне клиента JavaScript рискованно? –

+0

Кроме того, как вы столкнулись с проблемами CORS здесь? –

+0

Перед ответом перед ответом. Это было довольно давно, поэтому я не помню всех деталей. Это было для внутреннего командного сайта, поэтому он находится за брандмауэром нашей компании. Я бы не опубликовал этот токен в Интернете. – Rothrock

Смежные вопросы