【问题标题】:jquery Ajax url point to php functionsjquery Ajax url指向php函数
【发布时间】:2015-09-11 10:13:08
【问题描述】:

您好,是否可以使用 Ajax 从 PHP 函数中检索数据?

我希望我在 ajax 中的 url 指向我的一个函数。请在下面查看我的代码。

像这样:

    <?php
     class employee{

        public function __construct(){
        }

        public function fName($fName){
         echo $fName;
        }

        public function lName($lName){
         echo $lName;
        }
     }

        ?>


  <div id="fName"></div>

        <script type="text/javascript">
         $.ajax({
                type: 'POST',
                url: "classes.php", <!-- HERE I want to target the fname function-->
                success: function(result){
                 fname.html(result);}
                        });

        </script>

到目前为止,我所做的是创建一个新的 php 页面,其中包含这样的代码。

<?php
$employee = new employee();
$employee->fName();

然后将 ajax url 指向那个新的 php 页面。

【问题讨论】:

  • 这看起来设置正确。可能因为 fName 函数返回一个空值,您没有得到任何回报?
  • 是的,但我想要的是我想直接与我的班级交流并将 url 指向它的功能。而不是在其他页面中创建新对象。这可能吗?

标签: php jquery ajax


【解决方案1】:

假设此代码按照您的问题中所写的那样工作

<?php
$employee = new employee();
$employee->fName();

您可以将参数传递给您的 PHP 脚本,然后决定调用哪个函数,如下所示:

jQuery

$.ajax({
  type: 'GET',
  url: "classes.php?func=fname",
  success: function(result) {
    $("fname").html(result);
  }
});

PHP - classes.php:

<?php
$employee = new employee();

$func = @$_GET["func"];
switch($func) {
    case "fname":
       echo $employee->fName(); 
       break;
    case "lname":
       echo $employee->lName(); 
       break;
    default:
       break;
}

【讨论】:

  • 我想要的是一些快捷方式,而不是为每个函数创建新的 php 页面,而是直接在类中调用该函数。到目前为止,我相信这是最接近我想要的
  • 正如您所描述的那样,这是不可能的。 PHP 在运行任何 HTML/JS 之前在服务器上运行。执行 PHP 后,结果将发送到浏览器,然后浏览器执行 JS。两者在同一页面上没有实时通信。这个答案是典型的与 PHP 通信的模式
  • 我明白了,感谢您的洞察力并给了我这个想法。我真的很想避免创建大量页面。我希望我的 ajax url 只指向一页。谢谢你的代码,它对我有帮助。
  • 您可以做一件事来防止一遍又一遍地重新创建对象,但它有利也有弊。这是一个全新的话题,所以如果您想仔细阅读它,请随时提出新问题。但是,上述模式很简单。你可能会发现这个有趣的阅读:stackoverflow.com/questions/132194/…
  • 我刚刚意识到将所选函数放入 data: {func: fname} 中,而不是使用 url: "classes.php?func=fname",嗯,很酷。谢谢你的主意!
【解决方案2】:

url 属性必须是 url .. 在您的情况下,它可能指向 "/classes.php" ,假设文件位于网络服务器的文档根目录中

函数 fName 需要由该 url 中的代码调用。

所以你的文件“/classes.php”应该是这样的

<?php 
class Employee {  
  protected fName;
  protected lName;
  function __construct($f, $l) {
      $this->fName = $f;
      $this->lName = $l;
  }
  public function getFName(){
     return $this->fName ;
  }
  public function getLName(){
     return $this->lName ;
  }

}
$employee = new Employee("John" , "Doe");
echo $employee ->fName();

【讨论】:

  • 是的,但我有两个功能,并且都有回声。我怎样才能只从我的 fname 函数中检索数据?
  • 我只想与一页通信。该代码似乎只检索 fname。如果我想检索 lname 怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2017-05-20
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多