как использовать AJAX с классом PHP - PullRequest
1 голос
/ 22 мая 2011

это мой боттон:

            <form>
<input type="hidden"  id="id" value="'.$row['order_id'].'">         
<input type="button" value="Delete" onclick="ajaxFunction()">
            </form>

это функция ajax:

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function ajaxFunction(){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            document.myForm.time.value = ajaxRequest.responseText;
        }
    }
    var id = document.getElementById(\'id\').value;
    var queryString = "?id=" + id;
    ajaxRequest.open("GET", "classes/ajaxed/reservation_functions.php" + queryString, true);
    ajaxRequest.send(null); 
}

//-->
</script>

и вот php-файл, который обрабатывает эту функцию с именем оговоркой_functions.php:

<?php
$id = $_GET['id'];
require_once '../class.db.php';
require_once '../../includes/constants.php';
$db = new MySQL(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME, false);

$db->query("DELETE FROM orders WHERE order_id = $id;") or die(mysql_error());
echo 'DONE!';

?>

Я действительно хорошо разбираюсь в PHP, но я очень далек от AJAX, поэтому мой вопрос в том, как обрабатывать различные параметры с помощью ajax, чтобы быть более понятным: я хочу добавить функцию удаления, функцию печати, функцию редактирования, ноЯ хочу сделать один php-файл для обработки всех функций и функций, поставляемых с AJAX.

Мне немного сложно придумать идею, потому что я действительно далек от AJAX,

Спасибо за ваше время и помощь.

Ответы [ 2 ]

0 голосов
/ 22 мая 2011

вы можете сделать это:

Класс:

class AjaxActions {

   private static $instance;

   private function __construct () {}

   public static class getInstance() {

        if (!self::$instance) self:$instance = new self();

        return self::$instance;
   }

   private function makeReturn ($action, $data) {
        return json_encode(array(
             'action' => (string) $action,
             'time' => time(),
             'result' => $data
        ));
   }

   public function delete ($request) {
        $db = new MySQL(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME, false);
        $id = (int) $request['id'];

        $db->query("DELETE FROM orders WHERE order_id = $id;");

        if (!$db->errn) {
            $error = 0;
            $emsg = "";
        } else {
            $error = $db->errn;
            $emsg = $db->error;
        }

        return $this->makeReturn('delete', array(
            'error' => $error,
            'errorMessage' => $emsg
        ));

   }

   // Other actions here..

}

И ...

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;

if ($action) {

   $oAjaxCommand = AjaxActions::getInstace();

   if (method_exists($oAjaxCommand,$action) {
        $response = call_user_func (array($oAjaxCommand,$action),$_REQUEST);
        echo $response;
        exit(0);
   } else {
        thrown new Exception("Action not exists");
   }

}

Со стороны de javascript вы возвращаете объект json с ответом. Я рекомендовал использовать JS-фреймворк, такой как mootools или jquery . Эти фреймворки делают работу с ajax намного проще и кроссбраузернее.

0 голосов
/ 22 мая 2011

Как насчет:

switch (strtolower($_GET['action'])) {
    case 'delete' :
        // delete …
        break;
    case 'add' :
        // add …
        break;
    case 'foobar' :
        // foobar …
        break;
    default :
        // 404
}

Затем вызовите URL с дополнительным параметром action: ?action=delete&....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...