Надеюсь, это название не слишком загадочно. Что происходит, так это то, что у меня есть сценарий jQuery AJAX, который я пытаюсь использовать для доступа к API на удаленном сервере, который возвращает ответ JSON. Однако API возвращает JSON как тип MIME «text/html» (в заголовке ответа) вместо «application/json». Казалось бы очевидным, что мне просто нужно изменить возвращаемый тип контента с text на JSON, чтобы вызов AJAX правильно интерпретировал данные.
К сожалению, это не случай. Я пробовал это множеством разных способов, и все они терпят неудачу. Ближе всего к тому, чтобы заставить этот вызов API работать, я получил, когда отладчик сообщает мне: «Ресурс интерпретируется как сценарий, но передается с типом MIME text/html». И ошибки вызова AJAX выводятся с моим отладочным сообщением, которое выводит объект jqXHR в формате JSON, который говорит мне: {"readyState":4,"status":200,"statusText":"parsererror"}
Вот пример моего кода (хотя я изменил код разными способами, пытаясь заставить его работать, но эта версия кажется наиболее близкой к правильной):
$.ajax({
type: 'GET',
url: 'http://username:[email protected]/api/v1/projects.json',
contentType: 'application/json',
dataType: 'jsonp',
converters: {
'jsonp': jQuery.parseJSON,
},
success: function(data) {
alert(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log(textStatus+': '+errorThrown);
}
});
Если кто-то может понять, что мне нужно сделать по-другому, чтобы сделать эту работу, я буду чрезвычайно благодарен.
Также стоит отметить, что если вы скопируете или вставите URL-адрес API в адресную строку браузера и нажмете "Перейти", он даст правильный ответ JSON с правильным заголовком ответа ("application/json")
JSON
, а не с канбанпадом. 13.11.2012