#android #json #cordova
#Android #json #кордова
Вопрос:
Я делаю свои первые шаги в PhoneGap с Android (почему вам все равно нужно выбирать платформу? Он должен быть кроссплатформенным!). Я пытаюсь вызвать службу RESTful, получить взамен некоторый JSON и вывести его на экран. Учебные пособия для этого невероятно сложно найти. Я использую следующий код:
<!DOCTYPE HTML>
<html>
<head>
<title>JSON Demo</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript">
$.getJSON('http://MyServerIP/json/GetJobDetails/717/MyKey?callback=?', {
success:function(data)
{
data = evalJSON(data);
$('body').append('<strong>X </strong>');
},
error: function()
{
$('body').append('<strong>Error </strong>');
}
});
</script>
</head>
<body>
test 10
</body>
</html>
… Но я не получаю ответа, ни успеха, ни ошибки. Сервер сообщает, что он был поражен, и вернул данные. Просмотр того же URL-адреса также возвращает данные. Почему в эмуляторе ничего не отображается?
Ответ №1:
Вы можете найти хороший учебник по Android jquery mobile здесь, в официальной вики PhoneGap здесь: http://wiki .phonegap.com/w/page/36868306/UI Development using jQueryMobile
Для вашей проблемы убедитесь, что эта строка находится в файле манифеста приложения phonegap: <использует-разрешение android:name=»android.permission.ИНТЕРНЕТ» >< /использует-разрешение >
Кроме того, вы можете установить заголовки сервера на: ‘Access-Control-Allow-Origin: *’
Удачи!
Ответ №2:
По какой-то причине success: и error: убивали его, т.е. это работает:
<script type="text/javascript">
$.getJSON('http://MyServerIP/json/GetJobDetails/717/MyKey?callback=?', function(data)
{
data = evalJSON(data);
$('body').append('<strong>X </strong>');
});
</script>
Комментарии:
1. Если вам все еще интересно, причина
success
error
в том, что функции and не существуют в$.getJSON
. Это сокращенная функция getJSON documentation . Чтобы использовать эти функции, вам нужно либо определить глобальные обработчики Ajax jQuery , либо использовать полную$.ajax
функцию