使用 AJAX 的Cakephp,这个. element.setAttribute不是函数

pu82cl6c  于 2022-11-12  发布在  PHP
关注(0)|答案(2)|浏览(193)

我正在尝试做一个stackoverflow一样的标签系统。我遵循这个教程(在法语):http://www.formation-cakephp.com/34/autocomplete-en-ajax,它使用Prototype和Scriptaculous。当然,我将它应用到我的项目中
出现以下错误:

this.element.setAttribute is not a function : controls.js Line 86

其对应于

this.element.setAttribute('autocomplete','off');

在control.js文件中
我对 AJAX 还很陌生,所以我不知道自己做错了什么...
如果您需要任何文件中的代码,请告诉我!
view.ctp:

<div class="input">
<label>Tags :</label>
<?php e($ajax->autoComplete(
    'Tag.tag',
    '/tags/autocomplete',
    array(
        'minChars' => 3,
        'indicator' => 'ajaxloader'
    )
)); ?> 
<div id="ajaxloader" style="display:none;">
    Chargement...
</div>

控制器:

function autocomplete()
{
    $recherche = utf8_decode($this->data['Tag']['tag']);

    $tags = $this->Tag->find(
        'all',
        array(
            'fields' => 'DISTINCT tag',
            'conditions' => "tag LIKE '$recherche%'",
            'order' => 'tag',
            'limit' => 10
        )
    );

    $this->set(compact('tag', 'recherche'));
}
isr3a4wc

isr3a4wc1#

jQuery、scriptaculous和prototype不能很好地配合使用,但是可以通过将jQuery置于无冲突模式来解决这个问题。
var $j = jQuery.noConflict(); // $j is now an alias to the jQuery function; creating the new alias is optional.
现在,对于jQuery,使用$j而不是$,例如:
$j(document).ready(function() { $j( "div" ).hide(); });
有关避免jQuery冲突的更多信息,请参阅以下内容:https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

iyzzxitl

iyzzxitl2#

看起来scriptaculous并不能很好的处理j-query。当我删除j-query链接时,我不再收到错误。这绝对不是一个理想的解决方案,但我想我应该分享我的发现。

相关问题