-4

我从 php 中的面向对象编程开始。

我想做记录 - 使用 ajax 和 jquery。

编辑:我可以从文件 jquery.php 调用函数 ajax - 使用 jquery AJAX 吗?

//FILE jquery.php

class jquery {

    public function ajax() {

    echo "result";      

    }
}
4

3 回答 3

1

如果您进行类似于此的 ajax 调用:

http://example.com/ajax.php?firstParam=1

在您的ajax.php文件中,您可以执行以下操作:

switch($_GET['firstParam']){
 case "1":
  callYourFunction();
 break;
 case "2":
  someOtherFunction();
 break;
}

这是一个非常精简的例子......在现实世界的情况下,您必须考虑安全性并清理您从服务器外部(即来自用户)获得的任何信息。

我给出的名称只是占位符 - 您可以将函数/变量名称更改为您觉得舒服的任何名称。

我希望这能对你的难题有所启发。

于 2012-04-15T11:39:23.303 回答
1

不确定您是否完全理解 AJAX 是什么,但它是 Asynchronous JavaScript 和 XML 的首字母缩写。使用 Ajax,Web 应用程序可以异步(在后台)向服务器发送数据和从服务器检索数据,而不会干扰现有页面的显示和行为。而已。

我相信这就是您正在寻找的(尽管它不是 OOP,但我没有编写整个 OOP 登录来尝试回答您的问题)

文件:login.php

<?php
  $db = new PDO("mysql:host=localhost;dbname=database", SQL_USER, SQL_PASS );

  $stmt = $db->prepare('SELECT user_id, user_activated FROM users WHERE ( username = AND user_password = ? LIMIT 1');
  $stmt->execute( array( $_POST['u'], $_POST['p'] ) );

  if( $stmt->rowCount() == 1 )
  {
     // Authentication session storage stuff here
     echo 'Logged in';
  }
  else
  {
     echo 'bad login';
  }
?>

因此,您可以拥有一个 HTML 页面,其中包含以下内容:

<div id="results"></div>

<input type="text" id="txtUsername" /> <br />
<input type="password" id="txtPassword" /><br />
<button id="cmdLogin">Login</button>

<script>
  $(document).ready(function(){
     $("#cmdLogin").click(function(){
        $u = $("#txtUsername").val();
        $p = $("#txtPassword").val();

        $.ajax({
              type: "POST",
              url: "http://yoursite.com/login.php",
              data: "u="+u+"&p="+p
            }).done(function(results) { 
                  $("#results").html(results).hide().fadeIn();
            });
     });
  });
</script>

另外,请记住此代码未经测试并将其编写为对此的回复,因此不要将其视为您想要的解决方案,而是帮助您实现您的目标的资源要求。

于 2012-04-15T11:41:07.537 回答
1

您不能直接调用类 - 但您可以获取执行结果。

这里有一个例子,你可以如何几乎直接地调用它——但不要将它用于关键的登录代码。

<?php
$ftcn = $_GET['getname'];
$bc = new ReallyBadCode();
$bc->$ftcn();

class ReallyBadCode{
    function test(){
    }

    function __call($name, $args){
       $this->$name($args);
    }

}
于 2012-04-15T11:23:11.660 回答