Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

PHP上模拟事件来响应Ajax

  这东西比较简单,直接来看代码吧。 require 'events.php';
//事件函数
function on_submit($text){
  //获取参数并输出给客户端
  die($text.' ← 这货没救了');
};
  在引用了events.php后,Ajax提交过来的操作就会被放入一个函数中处理,这样页面的逻辑就更清晰了。下面是测试用的前端代码,和上面的代码是放在同一个文件中的。 <script src="jquery.js"></script>
<script>
//发送一个post请求到服务器
$.post("?submit",{
  text:"次碳酸钴"
},function(e){
  //输入返回的数据
  alert(e);
});
</script>

  下面就是events.php的代码,这才是重点。这个模拟事件最重要的就是从客户都提交过来的参数中取出需要的,上面的函数有$text这个参数,而$text的值就是客户都POST过来的$text这个参数。即使客户丢了一堆乱七八糟的参数过来,我们的事件也只取$text这个参数。 //events.php
//获取事件函数
$f='on_'.$_SERVER['QUERY_STRING'];
//判断存在
if(function_exists($f)){
  //获取函数对象
  $s=new ReflectionFunction($f);
  //获取函数形参列表
  $s=$s->getParameters();
  //遍历,并从POST过来的数据中获取数据
  foreach($s as &$i)$i=$_POST[$i->name];
  //把数据放入函数中调用
  call_user_func_array($f,$s);
  //删除多余变量
  unset($s,$i);
};
unset($f);
  其实就是利用ReflectionFunction来获取函数的参数列表,根据参数列表传入需要的参数啦。其实也没啥亮点,只是今天想不到写啥了,就拿这个凑个数啦。如果对你们没有帮助可别骂我哦。
网名:
34.203.213.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^