Использование javascript для получения значений php / mysql - PullRequest
0 голосов
/ 27 октября 2011

Я думаю о создании приложения для Android в приложении appcellerators titanium, и у меня есть вопрос, веб-сайт, для которого предназначено приложение, построен с использованием php / mysql, и что мне интересно, так как Titanium работает с использованием javascript, html и только css, есть ли способ, которым я могу извлекать данные динамически из моей базы данных, используя JavaScript?

если это уже было опубликовано, извините, я искал и не смог его найти: S

Ответы [ 4 ]

1 голос
/ 31 октября 2011

С помощью 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;

0 голосов
/ 27 октября 2011

Лучший способ - использовать JSON с помощью json_encode, если вы обращаетесь к базе данных с веб-сайта. Если вы пытались использовать локальную базу данных, используйте sqlite.

0 голосов
/ 27 октября 2011

Вам необходимо создать веб-сервис на своем веб-сайте и получить данные с помощью Titanium.Network.HTTPClient

Вы можете увидеть это здесь: http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Network.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();

Обратите внимание, что переменная данных недоступна вне области, даже если она глобальная.Вызовите свою функцию из области действия

В приложении вы можете использовать SQLite или не хранить данные.Все, что подходит вашему приложению лучше всего

0 голосов
/ 27 октября 2011

Попробуйте прочитать руководство по использованию баз данных 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-%E2%80%93-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-module

...