Question

J'ai une demande ajax qui demande un script php qui se connecte à mon serveur et renvoie des résultats

Voici mon code PHP:

<?php
require_once 'p/DataBase.class.php';
if (!isset($db)) //i added this if statment incase this caused the error
  $db = new DataBase();
$db->query('select * from table where status = 0 order by created_at desc');
$xml = ''; //$xml is just a variable, im not passing the data as xml, i was originally and didnt change the var name
while ($data = $db->fetchObject()) {
  $xml .= $data->title . "<br />";
  $xml .= $data->created_at . "<br />";
}
echo $xml;
?>

Et voici le JQuery:

$(document).ready(function () {

  function runAjax (data_obj,callback){

    $.ajax({
      url:"ajax.php",
      dataType: "html",
      data: data_obj,
      success: function(html) {              
        if ( typeof(callback) == "function") {
          callback(html);
        }
      }
    });
  }
  jQuery.timerDelayCall({
    interval: 10000,
    repeat: true,
    callback: function(timer) {
      runAjax({
        content: $('#date').html()
      }, function(result){
        $('#updates').html(result);
      });
    }
  });
});

Cela fonctionne bien au niveau local et fonctionne le pour le premier appel ajax dans l'application de titane, mais le second appel dans les déclarations d'applications de titane une erreur fatale: la classe ne peut pas redéclarer DataBase dans C: \ path-to-app \ dist \ win32 \ app-name \ Resources p \ DataBase.class.php sur la ligne 10 (ligne 10 étant la decleration classe class DataBase{)

Toute personne a des idées pour lesquelles cela pourrait être

Vive

Luc

Était-ce utile?

La solution

. Il semble être un bug de titane. Je l'ai résolu. Lorsque vous déclarez une classe / fonction, etc, vous devez: 1 - déplacer vos fonctions et des classes dans certains fichiers 2 - définir une constante après require_once votre fichier (s) 3 - require_once vos fichiers que si pas défini constante

Par exemple: J'ai un AJAX backend appelé test.php qui utilise une fonction de ma bibliothèque lib.php. Ensuite, je dois écrire ce qui suit: Dans mon lib.php:

define('LIBRARY_INCLUDED',1);
function directoryToXml($directory) {/*bla bla bla*/}

Dans mon test.php:

if(!defined('LIBRARY_INCLUDED')) {
    require_once(dirname(__FILE__).'/lib.php');
}

Il se produit parce que Titanium utilise le fichier PHP non seulement comme serveur Web le fait. Le fichier avec ses classes et fonctions existe au cours de l'exécution et de l'appeler deux fois de déclaration à répétition ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top