0

我有一个 ajax 请求,它请求一个连接到我的服务器并返回一些结果的 php 脚本

这是我的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;
?>

这是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);
      });
    }
  });
});

这在本地工作正常,适用于钛应用程序中的第一个 ajax 调用,但钛应用程序中的第二个调用返回致命错误:Cannot redeclare class DataBase in C:\path-to-app\dist\win32\app- name\Resources\p\DataBase.class.php 在第 10 行(第 10 行是类声明class DataBase{

任何人都知道为什么会这样

干杯

卢克

4

1 回答 1

1

所以。这似乎是一个钛错误。我已经解决了。当您声明任何类/函数等时,您必须: 1 - 将您的函数和类移动到某些文件中 2 - 在 require_once 您的文件之后定义任何常量 3 - 仅在未定义常量时才需要您的文件

例如:我有一个名为 test.php 的 AJAX 后端,它使用我的库 lib.php 中的一个函数。然后我必须写以下内容: 在我的 lib.php 中:

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

在我的 test.php 中:

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

发生这种情况是因为 Titanium 使用 PHP 文件,而不是像 Web 服务器那样。该文件及其类和函数在运行时存在并调用它两次导致重复声明......

于 2010-12-13T07:24:12.800 回答