繁体   English   中英

是否可以在Javascript(Ajax-> PHP)中发布到类方法?

[英]Is it possible to POST to a class method in Javascript (Ajax -> PHP)?

我正在使用Ajax处理带有进度条的文件上传,目前我发布到上传脚本:

          function uploadFile(revision) 
      {
          var file1 = _("fileToUpload").files[0];

          // FIXME: Developer Option
          alert(file1.name+" | "+file1.size+" | "+file1.type);

          var formdata = new FormData();
          formdata.append("fileToUpload", file1);
          formdata.append("revision", revision);
          var ajax = new XMLHttpRequest();
          ajax.upload.addEventListener("progress", progressHandler, false);
          ajax.addEventListener("load", completeHandler, false);
          ajax.addEventListener("error", errorHandler, false);
          ajax.addEventListener("abort", abortHandler, false);
          ajax.open("POST", "../file_upload_parser.php");
          ajax.send(formdata);    
      }

但是,如果可能的话,我想将我的上载移到一个类方法中(假设有一个名为FileHandler的类,我希望能够开机自检到它的upload()函数。

是否可以将其发布到类的上载方法?

显然,我希望能够保留加载栏的功能,并且如果有人需要查看Javascript的源代码,则此链接指向我从本质上复制粘贴的代码并进行了一些更改的地方(upload_form.html ):

JavaScript文件上传

据我所知,你做不到。 您可以做的是为您的类创建一个处理程序文件,例如,假设我们有这个PHP类,

<?php
class Car {     
    function getCarType() {
        return "Super Car";
    }
}
?>

然后在您的处理程序文件中

<?php
require_once 'Car.php';

if(isset($_POST['getCarType'])) {
     $car = new Car();
     $result = $car->getCarType();
}

echo $result;
?>

您可以将AJAX请求发布到处理程序,可以为每个请求创建特定的处理程序,也可以拥有通用的AJAX处理程序,但是该文件可能变得很大且难以维护。

这不是关于javascript的问题,而是关于“如何在PHP中正确路由请求?”尝试查看类似Symfony的Router的内容: https : //symfony.com/doc/current/book/routing.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM