Запросы getJSON возвращают Uncaught Reference и SyntaxError

Я использую функцию getJSON для захвата содержимого, возвращаемого из вызова URL-адреса, однако я продолжаю сталкиваться с ошибками ссылки или синтаксическими ошибками.

Если я запускаю скрипт getUserAgentDetails() с параметром «agent_name», я получаю необработанную ошибку ReferenceError, указывающую, что Chome (используемый мной браузер) не определен, тогда как, если я использую параметры «agent_version» или «os_name», Я получаю необработанную синтаксическую ошибку с указанием неожиданного числа.

Я считаю, что неожиданное число из «os_name» связано с «7» в моей операционной системе Windows 7, поэтому я подозреваю, что содержимое не обрабатывается правильно при возврате.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function getUserAgentDetails(param) {
$(document).ready(function() {
  $.getJSON(('http://www.useragentstring.com/?uas=' + encodeURI(navigator.userAgent) + '&getText=' + param + '&callback=?'), function(data) {
    var parts = data.split('=');
    alert(parts[1]);
  });
});
}

getUserAgentDetails("agent_name"); //Results in "Uncaught ReferenceError: Chrome is not defined"
//getUserAgentDetails("agent_version"); //Results in "Uncaught SyntaxError: Unexpected number "
//getUserAgentDetails("os_name"); //results in "Uncaught SyntaxError: Unexpected number "
</script>

person user1718690    schedule 04.10.2012    source источник
comment
Вы не можете использовать эту службу с javascript, она ограничена политикой того же происхождения.   -  person Dr.Molle    schedule 04.10.2012
comment
Можете ли вы объяснить, почему? Я думал добавить &callback=? решили ту же проблему происхождения? Кроме того, у вас есть предложения по альтернативному подходу?   -  person user1718690    schedule 04.10.2012
comment
когда сервер не отвечает с помощью jsonp (а он не отвечает) нет никакого способа. Вы должны искать сервис, который поддерживает jsonP, или делать разбор UA-строки самостоятельно.   -  person Dr.Molle    schedule 04.10.2012


Ответы (1)


Для таких запросов, как междоменные запросы, т.е. в вашем случае json не будет работать. В таких случаях вам нужно использовать jsonp..

Проверьте эту ссылку.

person Sushanth --    schedule 04.10.2012
comment
Я попытался использовать JSONP в следующем подходе, но все еще сталкиваюсь с теми же ошибками. Предложения? function getUserAgentDetails2(param) { $.ajax({ type: 'GET', url: ('http://www.useragentstring.com/?uas=' + encodeURI(navigator.userAgent) + '&getText=' + param), async: false, jsonpCallback: 'jsonCallback', contentType: "application/json", dataType: 'jsonp', success: function(data) { var parts = data.split('='); $('test').value=parts[1]; } }); } getUserAgentDetails2("agent_name"); Извините за ужасное форматирование - person user1718690; 04.10.2012