使用 jQuery AJAX 调用类方法?

2024-03-01

我正在从 PHP AJAX 库 xajax 迁移到 jQuery AJAX。

使用 xajax,我可以通过将公共类方法绑定到 javascript 函数名称(例如 $this->registerFunction('javascriptFunctionName', &$this, 'classMethodName')),将所有 AJAX 调用包含在类方法中。

我希望有一种方法可以用 jQuery AJAX 做类似的事情,这样我就可以做这样的事情:

$('#myButton').click(function() {
    $.get('class|methodName',
    {
      parameter: value
    },
    function(data) {
      if (data) {
        ...
      }
      else {
        ...
      }
    });

    return false;
  });
});

我知道您可以 AJAX 调用 MVC 控制器方法,但不幸的是我的旧产品不使用 MVC :-(

请告诉我有办法吗?

如果没有,有没有办法将调用映射到全局 PHP 函数?


为了顺应 Lane 的说法,您可能想要制作一个非常简单的 ajax 控制器并将所有内容路由到它:

<?php
class AjaxController {

protected $_vars = null;
protected $ajax = null;


public function __construct()
{
  $this->_vars = array_merge($_GET, $_POST);
  $this->_ajax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&  $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
  $this->_response = null;
}

public function process()
{
  if($this->isAjax()){
    if(isset($this->_vars['method']) && isset($this->_vars['class'])
    {
       $callback = array($this->_vars['class'], $this->_vars['method'];
    } elseif(isset($this->_vars['function'])){
      $callback = $this->_vars['function'];
    } 

    if(isset($callback) && is_callable($callback))
    {
       $this->_responseData = call_user_func($callback, $this->_vars);
       $this->sendResponse(200);
    } else {
       $this->_responseData = 'UH OH';
       $this->sendResponse(500);
    }


  }
}

public function sendResponse($httpStatCode = 200){

  // set headers and whatevs
  print $this->_response;
  exit;
}

} // END CLASS

$contoller = new AjaxController();
$controller->process();

当然,您想对参数进行一些过滤,并且可能在 htaccess/vhost 中进行一些不错的重写,以便您可以使用像 /ajax/class/method 这样的 url?...但您已经了解了总体思路。您可能希望拥有某种有效的 callbak 注册表,这样您就不仅仅是调用任何有效的 php 可调用...这可能很危险:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jQuery AJAX 调用类方法? 的相关文章

  • JQuery UI Draggable - 如何知道元素是否可拖动初始化?

    我的逻辑是 if this draginited a drag disabled element shouldn t get pass here as it is inited this draggable 我搜索了很多 找不到实现这个逻辑
  • 如何在 的每四个循环项之后添加

    我想在循环中的每第四个数字项之后退出循环 我想创建一个二十人的名单 在每一个tr应该是4个人 So I want to break from the loop after every 4th number of loop My one tr
  • jquery改变图像src

    代码与 adminLink 工作得很好 但是 itemLink 没有 我已经尝试了我能想到的一切 我想我需要一双新鲜的眼睛 我想做的就是在单击元素时更改这两个 img 的 src code document ready function H
  • 插入四个空格而不是制表符

    我试图在按下 Tab 键时插入四个空格 我正在使用以下代码 请参阅spaces t 但是当我将其切换到spaces 当我按 Tab 时只插入一个空格 我还尝试了 function textarea keydown function e va
  • jRails 是 Rails + jQuery 必须的吗?

    我是rails新手 使用rails 2 3 10 并且想使用jquery 特别是jquery ui 该项目是一个全新的项目 我计划使用 jquery ui 中的一些小部件 如 datapicker 和 selectable 等 我听说可以安
  • JQuery 颜色盒

    如何在没有事件绑定的情况下在页面加载时显示 Colorbox 更简单地说 我希望 Colorbox 在页面加载时立即加载 这是我目前正在使用的 Colorboxhttp colorpowered com colorbox http colo
  • jQuery 函数 .bind 在 IE 中不起作用

    这是我的网站 http johns webdesign com port html 如果您单击小缩略图 则会显示更大的图像 在 Chrome 中它工作得很好 但是当我在 IE9 中尝试它时它什么也没做 这是我的代码 jQuery JavaS
  • EMBER直接路由URL访问不加载数据

    当我直接从浏览器访问我的网址时遇到问题 它不会加载我的单一帖子信息 示例 index html posts 10052308 但当我访问 index html posts 然后单击我的一篇文章时 它会起作用 我的网址会更改为 index h
  • 将值设置为输入字段时,西班牙语文本无法正确显示

    我正在尝试将西班牙语文本设置到输入字段 但它似乎没有正确显示 但是 如果相同的文本位于 div 内部或已设置为输入字段的值 则该文本可以正常显示 HTML div Cuenta de Ahorros Persona F iacute sic
  • 嵌套列表、jquery 和 stopPropagation

    我遇到了嵌套菜单未按照我预期的方式运行的问题 我已经在 StackOverflow 上查看了一堆有关 stopPropagation 的内容 但它似乎不起作用 不幸的是 该网站是基于 WordPress 的 因此我无法直接控制网站上菜单生成
  • jquery无法获取data属性值

    我正在尝试在 jQuery 中设置一个变量 该值应该在按钮的单击事件上设置 onclick 事件触发 但 x10Device 变量仍然存在undefined 我使用的是jquery 1 7 1 jQuery x10Device this d
  • 在 iOS Safari 上滚动后锚点失去点击能力

    使用它来获取点击次数 nav li a click function event event preventDefault target this attr href replace goToByScroll target 这是滚动功能 f
  • document.ready 之前的 Jquery UI 界面看起来很难看

    HTML 元素在 onload 或 document ready 被触发之前显示 所有 jQuery UI 小部件都在 document ready 上加载 这使得页面在最初几秒钟看起来很难看 处理它的可能选项 在使用 jQuery UI
  • 有没有办法让 jslint 在 javascript 的下一行中使用大括号?

    我改变了我的编码风格 function getParams entity use strict var accountID store getItem AccountID switch entity case Topic to functi
  • Twitter Bootstrap - 下拉菜单 - 箭头键不适用于 Firefox 中的输入标签

    要求 我想在带有用户名和密码字段的下拉菜单中放置一个登录表单 我可以做到这一点 除了以下问题之外 一切正常 Issue 打字时我无法使用箭头键 上 下 firefox 当输入位于下拉代码之外时 这很有效 这适用于其他浏览器 例如 googl
  • Jquery.Validate - 基于哪个选项卡添加/删除规则

    我有一个 Bootstrap 4 选项卡式界面 每个选项卡上都有输入框 我想允许用户根据他们所在的选项卡输入不同的必填字段 因此我希望根据该选项卡添加或删除验证 无论用户位于哪个选项卡 还有一些强制输入 我所做的是创建一个默认验证函数 添加
  • 未捕获的类型错误:对象 # 在 Chrome 中没有“查找”方法

    可能与 未捕获的类型错误 对象 没有方法 查找 https stackoverflow com q 11134646 561731 这是我的问题的讨论的聊天记录 https chat stackoverflow com rooms 17 c
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • 如何检查用户电子邮件的唯一性并将结果传递给 jQuery?

    我有这个问题 我正在控制器中检查用户电子邮件并发送 json 成功响应 如果已获取 并添加输入的 css 样式 我还需要阻止提交并添加一些消息 这是我的检查电子邮件操作 使用本文 http paydrotalks com posts 45
  • 如何使用文本输入来定位?

    我想使用 jQuery 通过文本框转到锚点 例如 我想使用以下形式

随机推荐

  • 覆盖 PHPDoc 中的返回类型

    我有课Abcwith 方法 正文并不重要 return SomeBaseClass function getAll 在幼儿班Abc called AbcChild我想重新定义仅返回类的类型 以便在 Netbeans 中正确查看它 我可以在不
  • JavaFX 3D 透视相机运动

    现在 感谢我的帮助先前的问题 https stackoverflow com questions 69249037 most simple rotate camera via mouse not working 以及来自用户 trashgo
  • mix.scripts 不起作用(webpack.mix.js)

    我有以下 webpack mix js const mix require laravel mix mix scripts resources assets js app js resources assets js definers js
  • 拉直弯曲轮廓

    给定一个具有易于识别边缘的轮廓 如何拉直它及其内容 如图所示 检测黑色边缘并为其拟合样条曲线 从该样条线上 您将能够绘制法线 并沿着它定期标记点 这形成了易于拉直的 u v 网格 要计算目标图像 请绘制水平行 这些行对应于源中的特定法线 然
  • 进入智能指针,如何处理代表所有权?

    我制作了一个动态图结构 其中节点和弧都是类 我的意思是弧是内存中的实际实例 它们并不是由节点到节点的邻接列表暗示的 每个节点都有一个指向它所连接的弧的指针列表 每个弧都有 2 个指针 指向它所连接的 2 个节点 删除节点会调用其每条弧的de
  • 绑定到127.0.0.2

    我在 Windows XP PC 上本地运行客户端 服务器应用程序 出于测试目的 我想运行多个客户端 服务器有一个配置文件 其中包含可以连接的客户端的IP地址 在现实世界中 这些都将位于具有不同 IP 地址的不同主机上 目前我可以使用绑定到
  • 如何使用自定义适配器对 listView 进行排序

    我正在制作一个应用程序 其中显示状态为在线和离线的人数 目前ListView是根据api设置的 我想根据人员的在线状态对 listView 进行排序 例如 如果没有 的人在线 然后列表视图首先显示他们 我在我的项目中实现了延迟加载图像 这是
  • 允许模拟类继承最终类

    我们可以使用 new C 关键字声明一个最终 密封的不可继承类final class Generator final 这个类可以从其他类继承 可以有也可以没有virtual 继承或不继承 但是 如何制作呢final 但允许一个类继承它 我们
  • div 内的垂直对齐范围[重复]

    这个问题在这里已经有答案了 http jsfiddle net UmHNL 2 http jsfiddle net UmHNL 2 div class container span Some text yay span div div cl
  • com.android.builder.testing.api.DeviceException:没有连接的设备!詹金斯错误

    我在 Windows 7 机器上安装了 Jenkins 2 73 1 没有从站 构建 Android 应用程序设置只有一项工作 我有connectedCheckgradle 任务作为作业构建过程的一部分执行 当我重新启动计算机并运行 Jen
  • 可拖动项目总是下降约 80px

    我对可拖动项目有奇怪的行为 每次我将它拖到我的堆栈上时 它都会从放置位置向下下降约 80px 这是一个近似值 也许对于另一部手机 它可能是其他值 x 值对我来说似乎没问题 这是代码 class GesturePage extends Sta
  • 如何在 DefaultRouter() 中进行反向操作

    我正在设置一个新的测试 并且我想进行相反的操作 router DefaultRouter router register profile views UserProfileViewSet base name profile urlpatte
  • 如何动态更改 Apollo Web Socket Link URI?

    目前我已经设置了 Apollo websocket 链接 如下所示 const wsLink new WebSocketLink uri ws example com graphql token getToken options recon
  • 如何将 Git 存储库从 Beanstalk 移至 Github?

    我的代码仓库在豆茎 http beanstalkapp com 如何将代码从 Beanstalk 移至Github https github com 建议的方法是 git clone bare url for beanstalk repo
  • R:如何从日期中删除当天? [复制]

    这个问题在这里已经有答案了 我在 df 列中有一堆日期 格式如下 dd mm yyyy 我希望它看起来像这样 01 2020 mm yyyy 如何从所有日期中删除这一天 Use format指定您想要的日期格式 date lt as Dat
  • 从多个 JavaScript 线程访问 IndexedDB

    概述 我试图避免从网页和网络工作人员访问 IndexedDB 时出现竞争情况 Setup 当用户使用站点时将项目保存到本地 IndexedDB 的网页 每当用户将数据保存到本地数据库时 记录就会被标记为 未发送 Web worker 后台线
  • 每当在树视图中添加新节点时创建事件处理程序

    我想编写一个自定义类 每当我向树视图添加一个节点时 它都应该调用一个事件 这样我就可以递归地运行它 我很少使用TreeView 但乍一看这是我的第一印象 由于无法继承 TreeViewCollection 因此您可能必须在新类上创建一个单独
  • 如何获得像Instagram一样1:1比例的Android Camera2?

    我的问题很简单 如何获得安卓系统android hardware Camera2像 Instagram 一样 1 1 比例且不变形 我用 GoogeSamples 项目进行了测试android Camera2Basic https gith
  • Mac OS X 虚拟环境中的 Python 安装是否包含一个可以包含到 Xcode 中的框架?

    我喜欢将 Python 与 numpy scipy 和其他一些包一起使用 我是一个绝对的 Python 初学者 在 Mac OS X 下安装时遇到一些问题 我按照这两个教程来安装 python 1 http hackercodex com
  • 使用 jQuery AJAX 调用类方法?

    我正在从 PHP AJAX 库 xajax 迁移到 jQuery AJAX 使用 xajax 我可以通过将公共类方法绑定到 javascript 函数名称 例如 this gt registerFunction javascriptFunc