Чуть раньше я писал как залогиниться на сервере с помощью PhoneGap и JQuery Mobile, но наше приложение будет бесполезным, если мы не смогли получить данные с удаленного сервера не так ли? Для этого нам нужно прежде всего что бы сервер мог генерировать JSON строку, давайте будем думать что он может это делать, если хотите узнать побольше то прошу в википедию, там доступно и ясно написано как это сделать.
А мы же будем получать данные из строчного json. Он будет иметь вид:
Дальше если помните у нас была вот такая штука в предыдущей статье:
data — это то что нам отправляет сервер в виде данных, ну или в нашем случае json строку которую нам нужно распарсить, для этого мы будем использовать конструкцию response_obj
Для того что бы вывести то что нам прислал сервер нам нужно написать следующий код вместо «alert(data);»:
Теперь у нас принятый список имеет вид:
var response_obj = {
"response": "ok",
"common": {
"comment": "",
"version": "0.01",
"api_key": "ABM6WU0BAAAANfFuIQIAV1pUEYIBeogyUNvVbhNaJPWeM-AAAAAAAAAAAACRXgDsaYNpZWpBczn4Lq6QmkwK6g=="
},
"tasks": [{
"name": "Conf synh",
"url": "https://91.228.199.95/ksiywFac63f2hs/conf/",
"time": "small",
"output": "/home/user/lol/conf/",
"user": "testuser1",
"pass": "67890",
"items": [{
"course": "server2client",
"distname": "telefon.lol.txt",
"locname": "telefon.txt",
"date": "2012-06-01-13-33",
"size": "142"},
{
"course": "server2client",
"distname": "ru.android.loc",
"locname": "/home/user/lol/loc/ru.loc",
"date": "2012-06-01-13-35",
"size": "53"}]},
{
"name": "Photo synhronize",
"url": "https://91.228.199.95/ksiywFac63f2hs/fotos.lol/",
"time": "big",
"output": "/home/user/lol/fotos/",
"user": "testuser1",
"pass": "67890",
"items": [{
"course": "server2client",
"distname": "Picture_1.jpg",
"locname": "foto1.jpg",
"date": "2012-01-20-17-47",
"size": "91857"},
{
"course": "server2client",
"distname": "Picture_2.jpg",
"locname": "foto2.jpg",
"date": "2012-01-20-17-47",
"size": "31459"},
{
"course": "server2client",
"distname": "Picture_3.jpg",
"locname": "foto3.jpg",
"date": "2012-01-20-17-47",
"size": "34490"},
{
"course": "server2client",
"distname": "Picture_4.jpg",
"locname": "foto4.jpg",
"date": "2012-01-20-17-47",
"size": "40951"}]},
{
"name": "Lol",
"url": "https://91.228.199.95/ksiywFac63f2hs/",
"time": "big",
"output": "/home/user/lol/",
"user": "testuser1",
"pass": "67890",
"items": [{
"course": "client2server",
"distname": "userfotos.php",
"locname": "moifotos"}]}]
}
Дальше если помните у нас была вот такая штука в предыдущей статье:
if(data != "") {
alert(data); //вот это
} else {
alert("Could not connect to server");
}
data — это то что нам отправляет сервер в виде данных, ну или в нашем случае json строку которую нам нужно распарсить, для этого мы будем использовать конструкцию response_obj
Для того что бы вывести то что нам прислал сервер нам нужно написать следующий код вместо «alert(data);»:
$.each(response_obj.tasks, function(task_idx, task) { //заходим в объект tasks
var $taskli = $("<li>"+task.name+"</li>").appendTo($("#tasks")); //записываем его в список, все таски будут отображаться в виде списка
var $taskul = $("<ol/>").appendTo($taskli);
$.each(task.items, function(item_idx, itm) {//заходим в список items
$("<li>"+itm.locname+"</li>").appendTo($taskul);//выводим их в подсписок
});
});
Теперь у нас принятый список имеет вид:
Все мы получили нужные нам данные, теперь мы можем делать с ними что угодно, засунуть в красивый listView или дальше работать с ними.
Спасибо за внимание. Буду вопросы, задавайте, буду рад помочь.
Спасибо за внимание. Буду вопросы, задавайте, буду рад помочь.
а на серверной стороне что писали?
ОтветитьУдалитьтам порты прослушиваются? или на php просто отдается response_obj ?
На серверной стороне генерируется json строка которую я получаю при обращении ну и обрабатываю
Удалитьа не подскажешь, как таймер с обратным отсчетам делать - на стороне сервера?
ОтветитьУдалитьПри подкл клиента - запомнить время сервера (T) (клиентом и сервером), и при истечении его подключаться опять клиентом к серверу?! или подключаться чаще, но сервер должен через определенное время от (T) только отдавать новую информацию?!
смысл в том,что 2 клиента подключаются и по-очереди принимают данные с сервера (игра с переходом хода) - только интересно с задержками интернета на клиентах - не будет расхождений... ?! :)
спасибо
Не подскажу так как я серверные скрипты не писал, для этого у меня есть php разработчик который пишет всю серверную часть)
Удалитьобидно) но все-равно спасибо)))
Удалитьддем примеров написания серверной части от коллеги))))))