是否有一个PHP框架,使得jquery& ajax更容易?

时间:2011-06-07 09:04:53

标签: php jquery ajax codeigniter frameworks

过去两年我一直在使用Codeigniter并且真的成为了一个忠实的粉丝,但在过去的一年里,我发现自己编写的JavaScript越来越多,而不是PHP。

在开始时,我会用PHP编写所有内容,但现在我发现自己一直使用$ .ajax。而且我觉得我在javascript和php之间重复自己。

我知道CI确实可以让你对ajax有一个很好的控制,但我仍然有两个人写了大量的javascript,我想尽可能地巩固。

我想我正在寻找的是一个与jQuery的$ .ajax紧密集成的php框架。

2 个答案:

答案 0 :(得分:3)

我在Javascript中使用这段代码。后端智能事物是在MVC类型的组织中组织的,因此影响一个模块的事物通常组合在一起。一般来说,我也为单独的模型创建了一个sperate模块,但在某些情况下,你可能会偏离这个原则。

我的设置是在后面的symfony和前面的普通jquery。有一些方法可以自动化这个部分,比如http://javascriptmvc.com/,我觉得它在很多方面都有限制。这是我整合php和jquery的工作流程。

<强> PHP

执行一段代码并将其包装在try / catch块中。这样,错误消息可以传播到前端。在这方面,此方法有助于将异常转换为可读错误。 (从json调试)。

try {
    //... execute code ..  go about your buisness..
    $this->result = "Moved  " . count($files) . " files ";
    // result can be anything that can be serialized by json_encode()
} catch (Exception $e) {
   $this->error = $e->getMessage() . ' l: '  . $e->getLine() . ' f:' . $e->getFile();
   // return an error message if there is an exception. Also throw exceptions yourself to make your life easier.
}
// json response basically does something like echo json_encode(array("error" => $this->error, "result" => $this->result))
return $this->jsonResponse();

对于错误处理,我经常使用它来解析错误。

public function parseException($e) {
    $result = 'Exception: "';
    $result .= $e->getMessage();
    $trace = $e->getTrace();
    foreach (range(0, 10) as $i) {
        $result .= '" @ ';
        if (!isset($trace[$i])) {
            break;
        }
        if (isset($trace[$i]['class'])) {
            $result .= $trace[$i]['class'];
            $result .= '->';
        }
        $result .= $trace[$i]['function'];
        $result .= '(); ';
        $result .= $e->getFile() . ':' . $e->getLine() . "\n\n";
    }

    return $result;
}

Javascript方

/**
 * doRequest in an ajax development tool to quickly execute data posts.
 * @requires jQuery.log
 * @param action (string): url for the action to be called. in config.action the prefix for the url can be set
 * @param data (object): data to be send. eg. {'id':5, 'attr':'value'}
 * @param successCallback (function): callback function to be executed when response is success
 * @param errorCallback (function): callback function to be executed when response is success
 */
jQuery.doRequest = function (action, data, successCallback, errorCallback) {
    if (typeof(successCallback) == "undefined") {
        successCallback = function(){};
    } 
    if (typeof(errorCallback) == "undefined") {
        errorCallback = function(data ){
            alert(data.error);
        };
    }
    jQuery.log(action);

    jQuery.post(action, data, function (data, status)
    {

        jQuery.log(data);
        jQuery.log(status);
        if (data.error !== null || status != 'success') {
            // error handler
            errorCallback(data);
        } else {
            successCallback(data);
        }
    },'json');
};

注意:如果将它们与pNotify

等组合在一起,则错误回调非常好

答案 1 :(得分:3)

了解Agile Toolkit,这是一个 PHP UI Framework 。 UI意味着它可以处理HTML,JavaScript,CSS和AJAX,同时允许您使用简单的面向对象的PHP语言进行开发。

http://agiletoolkit.org/intro/javascript

还有一篇博文将其与CodeIgniter进行比较:http://agiletoolkit.org/blog/agile-toolkit-for-codeigniter-developer/

P.S。我是Agile Toolkit的合着者。