#php #javascript #android #mysql #titanium
#php #javascript #Android #mysql #titanium
Вопрос:
я подумываю о создании приложения для Android в приложении appcellerators titanium, и у меня есть вопрос: веб-сайт, для которого предназначено приложение, создан с использованием php / mysql, и мне интересно, поскольку titanium работает только с использованием javascript, html и css, есть ли способ, которым я могу извлечь данныединамически из моей базы данных с использованием javascript?
если это уже было опубликовано, я сожалею, что искал и не смог его найти: S
Комментарии:
1. Напрямую через JS — нет. Однако ничто не мешает вам создать службу, с которой взаимодействует ваш JS-код (получает данные в формате JSON из MySQL с использованием PHP), что позволит вам продолжать использовать titanium.
Ответ №1:
С помощью PHP возьмите массив ответов вашей базы данных и закодируйте его следующим образом:
<?php
json_encode($db_array);
?>
Дополнительная информация:
http://php.net/manual/en/function.json-encode.php
Обратите внимание, что вам понадобится PHP 5.2 или выше, чтобы иметь встроенные функции JSON для PHP.
В Titanium вы хотите открыть XHR (или сетевой обработчик) для сбора данных:
var xhr = Ti.Network.createHTTPClient();
var.onload = function()
{
try
{
data = JSON.parse(this.responseText);
}
catch (excp)
{
alert('JSON parse failed');
}
// you should handle your network async, meaning you should handle any renders or any post elements here. if you make it sync, you'll cause all other handlers and functions to work improperly (like click events, etc).
}
xhr.open("GET", "your url here");
xhr.send();
Вы можете получить доступ к массиву данных, просто вызвав data[0].some_col;
Ответ №2:
Попробуйте прочитать руководство по использованию баз данных SQLite в приложениях Titanium
, извините, это для iPhone, но в основах принцип тот же
http://mobile.tutsplus.com/tutorials/appcelerator/titanium-mobile-database-driven-tables-with-sqlite/
http://mobile.tutsplus.com/tutorials/appcelerator/titanium-mobile-database-driven-tables-with-sqlite-part-2/
http://mobile.tutsplus.com/tutorials/appcelerator/titanium-mobile-database-driven-tables-with-sqlite-–-part-3/
использование выглядит так:
var db = Ti.Database.install('../products.sqlite','products');
var rows = db.execute('SELECT DISTINCT category FROM products');
Документация:
http://developer.appcelerator.com/apidoc/mobile/1.3/Titanium .Database-модуль
Ответ №3:
Лучшим способом было бы использовать JSON с использованием json_encode, если вы обращаетесь к базе данных с веб-сайта. Если вы пытались использовать локальную базу данных, используйте sqlite.
Ответ №4:
Вам нужно создать веб-сервис на своем веб-сайте и извлекать данные с помощью Titanium.Network.HTTPClient
Вы можете увидеть это здесь: http://developer.appcelerator.com/apidoc/mobile/latest/Titanium .Сеть.HttpClient-object
Примером может быть:
var xhr = Titanium.Network.createHTTPClient();
xhr.onload = function() {
var data = this.responseText; //response is here
// do your thing within this scope, or call a function/event from here
}
var url = 'http://www.google.nl';
xhr.open("GET", url); // or "POST"
xhr.send();
Обратите внимание, что переменная data недоступна за пределами области видимости, даже если она глобальная. Вызовите свою функцию из области видимости
В приложении вы можете либо использовать SQLite, либо не сохранять данные. Все, что подходит вашему приложению лучше всего