【问题标题】:CakePHP 2.0 LivesearchCakePHP 2.0 实时搜索
【发布时间】:2011-11-01 18:50:32
【问题描述】:

我正在尝试在 CakePHP 2.0 中创建:http://www.justkez.com/cakephp-livesearch/。 问题是 AjaxHelper 在 CakePHP 2.0 中不再可用,所以

echo $this->Ajax->observeField('query', $options);

不再起作用了。

有什么建议吗?

【问题讨论】:

标签: php jquery ajax cakephp search


【解决方案1】:

AjaxHelper 调用都只是 JavaScript 函数的便捷方法;其中大部分都可以在 Javascript 本身中轻松实现,这是我更喜欢自己做的方式。我想observeField 会简单地添加一个“onchange”事件监听器,但我从未使用过它,所以我不能确定。

在 Cake 2.0(顺便说一下,还有 1.3)中有一个 AjaxHelper 的替代品,它被称为 JsHelper,它使用各种引擎来适应现有的多个 JavaScript 框架。它可能没有 AjaxHelper 曾经拥有的相同方法,但它更加灵活,我很确定它会满足您的需求。

【讨论】:

    【解决方案2】:

    我最终使用 JSHelper 来实现它,就像上面建议的那样。我会将其标记为答案,因为它包含有关如何执行此操作的实际代码示例。

    <h3>Search Reservations</h3>
    <?php
    echo $this->Html->css('screen');
    // we need some javascripts for this
    echo $this->Html->script('jquery');
    // create the form
    echo $this->Form->create(false, array('type' => 'get', 'default' => false));
    echo $this->Form->input('query', array('type' => 'text','id' => 'query', 'name' => 'query', 'label' => false))?>
    <div id="loading" style="display: none; ">
    <?php
    echo $this->Html->image('ajax_clock.gif');
    ?>
    </div>
    <?php
    $this->Js->get('#query')->event('keyup', $this->Js->request( 
    array('controller' => 'sales','action' => 'searchReservations', $event['Event']['id']), 
    array( 
    'update' => '#view', 
    'async' => true,
    'dataExpression' => true, 
    'method' => 'post', 
    'data' => $this->Js->serializeForm(array('isForm' => false, 'inline' => true))) 
    ));
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多