2014-08-28 3 views
0

Я создаю мобильное приложение с Phonegap. Поскольку проект основан на сервере, я использую JQuery и AJAX для подключения к php-файлам, расположенным на сервере. Теперь я имею следующую проблему:Как я могу получить методы класса php в AJAX Call?

я делаю вызов AJAX, скажем, PHP-файл login.php по

$.post('http://example.com/php/login.php', 
{  

}).success(
    function(data){ 

      console.log(data); 

}).error(
    function(data){ 
     //return error 
     console.log("Error post ajax ");   
},'json'); 

В login.php я хочу использовать методы класса, где класс написанный в другом php-файле, class.php. Так login.php выглядит как этот

<?php 

    require_once('http://example.com/php/class.php'); 

    $test = $class->test(); 

    echo json_encode($test); 

?> 

и class.php выглядит следующим образом:

<?php 
class CLASS { 

     public function test(){ 
      echo "test"; 
     } 
} 

$class = new CLASS; 
?> 

Но я не могу использовать метод испытания() в классе CLASS. Если я напишу CLASS в файле login.php, конечно, это сработает, но это не то, что я хочу.

У кого-нибудь есть подсказки для меня, как решить эту проблему?

+0

В чем причина не создания экземпляра класса в login.php?Вы должны хранить ваши файлы PHP как можно более модульными, чтобы они делали только одно и только одно. (Если это класс, это должно быть только определение класса и т. Д.) – eluong

ответ

2

Вы должны создать экземпляр класса в login.php по соглашению.

Это:

$test = $class->test(); 

Должно быть так:

$test = new CLASS(); 
$test->test(); 

Я думаю, что вы сказали, что это не то, что вы хотите, так что это может устранить проблему:

Вы не объявляя переменная $ class правильно:

Это:

$class = new CLASS; 

Должно быть так:

$class = new CLASS(); 
+0

Спасибо за ваш комментарий. Мне было интересно, почему я не должен создавать экземпляр класса сразу после класса? Но, кроме того, это также не работает в приложении phonegap ... – Kaba19883

+0

Для удобства и удобочитаемости. Вы хотите «включить» определение своего класса, а затем создать его в файле, в котором вы его используете. Извините, я не знаю телефонную разницу, поэтому я не могу вам помочь. Позволяет ли phonegap встроить PHP-обработку в свои файлы HTML/JS? – eluong

+0

Я думал, что нет, но теперь это работает. Используя подсказку от души, чтобы использовать исходный путь сервера в require_once и создавая экземпляр класса в login.php, он работает. Огромное спасибо! – Kaba19883

2

Вы должны научиться азам, например, из этого урока http://tut.php-quake.net/de/, и получить некоторые вещи прямо. Многие вещи, которые вы делаете это просто неправильно

require_once('http://example.com/php/class.php'); не включают в себя, как это, вы включите в путь на сервере, а не URL

require_once('/path/to/your/file/class.php'); Больше как это.

$test = $class->test(); 

это также не будет работать, если ваша функция выглядит

public function test(){ 
     echo "test"; 
    } 

это, ваша функция должна возвращать значение

public function test(){ 
     return "test"; 
    } 

добиться того, что вы пытаетесь .... рассмотреть сначала получить первые основы, это будет мой первый совет, имейте в виду, я просто хочу помочь вам, потому что вы будете бороться чаще, если вы не получите эти основы и не знаете язык, который вы используете;)

+0

Отличные советы! Чтение стандартов кодирования PSR может дать ему хорошие рекомендации! http://www.php-fig.org/psr/ – eluong

+0

Я пишу это немного слишком быстро. Конечно, должно быть возвращение в funtion. Я понимаю, что вы имеете в виду с require_once, я также использовал его на своем веб-сайте. Но проблема в phonegap заключается в том, что все файлы должны быть html, css или js-файлами. Итак, как я могу получить доступ к class.php, где у меня есть пара функций в классе? – Kaba19883

+0

Вам просто нужен сервер для обработки php-файлов, телефонная задержка не может этого сделать, или у вас в случае, если iOS будет писать эту часть, которую вы хотите динамически в объективе-c, или в случае андроида в java и подключить его к материал, который вы делаете с телефонной связью – Soulan

Смежные вопросы