php - 如何在php类中使用ajax

标签 php mysql ajax

这是我的按钮:

            <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>

这里是处理这个名为 reservation_functions.php 的函数的 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 真的很远,

感谢您的宝贵时间和帮助。

最佳答案

你可以做到:

类:

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 对象。我推荐使用像 mootools 这样的 JS 框架。或 jquery .这个框架使 ajax 工作变得非常容易,而且是跨浏览器的。

关于php - 如何在php类中使用ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085578/

相关文章:

php - 带有 LIMIT 和 ORDER BY 的 MYSQL UPDATE

php - SQL : username and password not recognized correctly

mysql - PHPMyAdmin放入最新的数据库

javascript - 有人用过 Sigma Grid(基于 Javascript 的可编辑数据网格)吗?

php - ajax登录问题

jquery - ASP.NET AJAX 返回 JSON 但未识别为 JSON

php - Doctrine cli 中的多种环境

php - Joomla 插件通过渗透现有模块或组件来添加新功能

php - 带有 AddHandler php5-script .php 行的 .htaccess 有什么作用?

PHP & MySQL 地理距离计算