ajax - Ext.Direct VS Ext.Ajax

标签 ajax extjs ext-direct

与常规 Ext.ajax 调用相比,Ext.direct 的主要优点是什么?我什么时候应该考虑使用一种而不是另一种?

最佳答案

实际上,这取决于您的后端、您想要做什么以及适合您的情况。你提出的问题相当模糊,所以我的回答对你来说只能做这么多。您能做的最好的事情是查看 Ext.Direct 和 Ext.Ajax 的 API 页面。 Ext.Direct 是(我上次查看的)非常详细的文档,就像 .Ajax 一样,但是 .Ajax 并没有太多。

Ext.Direct - 我在上一份工作中开始实现这个,总而言之,它是一个启动和运行的 PITA,但是之后的好处非常简单。 Ext.Direct 允许您调用服务器来执行定义为 API 的方法,您以 JSON 对象的形式传递给 Ext。然后将这些方法公开给您的应用程序:

 // Server-side
 class MyDirectRouter
 {
     public function GetNames(){
        // Get some names from the database
        return $names;
     }
 }

 // Client-side - also, not sure on exact configs here so 
 // you should do your homework
 var store = Ext.create('Ext.data.DirectStore', {
   // blah blah configs
   proxy: {
       url: '/my/direct/router/GetNames',
       type: 'direct'
 });

商店将要求服务器调用所述方法,服务器将响应给商店。你可以做一些巧妙的事情,拥有一个随时可用和公开的 API 可以为你省去很多设置自定义路由、 Controller 等的麻烦。

Ext.Ajax 名字说明了一切:AJAX。调用服务器上的页面并返回响应。这里的主要区别在于它调用的是一个页面,而不是一个方法。页面可以做很多事情(当然,方法也可以),但页面负责格式化输出 - JSON、XML 等。服务器端 直销 方法最终也会格式化输出,但通常会编写一个路由器来处理方法的调用和输出格式。 Ext.Ajax 更容易处理,因为除了在另一端处理 AJAX 请求的页面之外,它几乎不需要任何设置,而 Direct 需要一些后端类来处理路由、API 公开等。有插件对于不同的框架(Kohana、CodeIgnitor,可能是 WordPress 等),推出自己的框架可能并不困难。为了公平起见,例如 Ext.Ajax:
// Server-side - code of /ajax.php
echo(json_encode(array(
    'DATA' => array(
        array('id' => 3, 'name' => 'john'), 
        array('id' => 4, 'name' => 'Jill')
     )
));

// Client-side
var store = Ext.create('Ext.data.Store', {
    fields: ['id', 'name'], // You should really use a model
    proxy: {
        type: 'ajax',
        url: '/ajax.php',
        reader: {
            type: 'json',
            root: 'DATA'
        }
    }
});

我希望这能给你一些观点,但实际上你应该了解每个人的工作方式并应用最适合你和你的情况的解决方案。阅读 Ext API 页面是一个很好的起点,示例和演示页面提供了两者的示例。

关于ajax - Ext.Direct VS Ext.Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668166/

相关文章:

javascript - ExtJS 4.1 从外部网页加载内容

data-binding - ExtJS 双向数据绑定(bind)?或替代品

java - 使用 ext-js 的服务器端技术

jquery - 如何将响应值从 .post() 返回到我的函数中?

javascript - 事件停止重复

jquery - 将 post 值添加到 jQuery 表单对象

php - 未定义 sendToValue 的 jQuery ajax 调用错误,此 jquery 代码有什么问题?

javascript - ExtJS 在打开其他窗口之前关闭窗口