dm/ajaxcom

控制PHP中的Ajax

安装次数: 13,553

依赖: 0

建议: 0

安全性: 0

星标: 15

关注者: 20

分支: 5

开放问题: 7

语言:JavaScript

v1.6.2 2017-09-27 05:35 UTC

README

Build Status Scrutinizer Code Quality

AjaxCom

AjaxCom是一个PHP库,允许开发者使用最小化的JavaScript在PHP中编写Ajax代码。

演示

http://ajaxcom.everlution.sk/

特性

  • 向元素追加HTML
  • 在元素前添加HTML
  • 用新的HTML替换元素
  • 设置元素的HTML
  • 设置元素的值
  • 显示闪存消息
  • 显示模态框
  • 更改URL
  • 调用函数

要求

  • PHP >= 5.3.3
  • jQuery >= 1.7.x

安装

通过composer

{
    "require": {
        "dm/ajaxcom": "dev-master"
    }
}

用法

JavaScript

包含位于src/DM/AjaxCom/Resources/public/js/ajaxcom.js的javascript库

拦截所有锚点的点击事件和表单的提交事件

$(document).ajaxcom();

或者只拦截具有data-ajaxcom的元素

$(document).ajaxcom('[data-ajaxcom]');

PHP

use DM\AjaxCom\Handler;

if (isset($_SERVER['X-AjaxCom'])) {
    // Render page using AjaxCom library
    $handler = new Handler();
    // Change URL to /newurl
    $handler->changeUrl('/newurl');
    // Append some html to an element
    $handler->container('#table')
        ->append('<tr><td>This is a new row</td></tr>');
    // Replace element with some new html
    $handler->container('#something')
        ->replaceWith('<span id="somethingnew">Some text</span>');
    // Display modal
    $handler->modal(
        '<div class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h3 id="myModalLabel">Modal header</h3>
            </div>
            <div class="modal-body">
                <p>One fine body.</p>
            </div>
            <div class="modal-footer">
                <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
                <button class="btn btn-primary">Save changes</button>
            </div>
        </div>'
    );
    
    // NOTE: It is important to call callback() AFTER container() or modal()
    // when you are manipulating the rendered DOM inside the callback;
    // otherwise the callback will be called before elements of DOM are loaded
    
    // Call funcname()
    $handler->callback('funcname');
    // Call namespace.funcname()
    $handler->callback('namespace.funcname');
    // You can also specify parameters which will be passed as object to the funcion
    $handler->callback('namespace.funcname', ['this' => 'will', 'be' => 'passed', 'as' => 'an object', 'to' => 'the function']);
    

    header('Content-type: application/json');
    echo json_encode($handler->respond());
} else {
    // Render page normally
}