jquery - синтаксическая ошибка в массиве - PullRequest
0 голосов
/ 26 января 2011

интересовался, может ли кто-нибудь сказать мне, что с этим не так:

function cat_autocomplete(){
    var categoryTags = ["boots>black","boots>brown>boys>blue","clothes>small_men>scarfs>blue","boots","boots>brown>boys","boots>brown","ties>casual","clothes","coats","clothes>girls","boots>brown>girls","clothes>small_men>hats","jackets","clothes>mens","clothes>red","boots>brown>red","clothes>small_men>scarfs","shoes","clothes>small_men","ties>smart","ties","clothes>womens"];
    $( "input[name=category]" ).autocomplete({
        source: categoryTags
    });
} 

ошибка в firebug с категорией тегов ... я не вижу ничего плохого.

редактировать: полный код

    <script type="text/javascript">
function cat_autocomplete(){
    var categoryTags = ["boots>black","boots>brown>boys>blue","clothes>small_men>scarfs>blue","boots","boots>brown>boys","boots>brown","ties>casual","clothes","coats","clothes>girls","boots>brown>girls","clothes>small_men>hats","jackets","clothes>mens","clothes>red","boots>brown>red","clothes>small_men>scarfs","shoes","clothes>small_men","ties>smart","ties","clothes>womens"];
    $( "input[name=category]" ).autocomplete({
        source: categoryTags
    });
}
function prod_autocomplete(){
    var productTags = ["clothes>small_men>hats","boots>black","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>mens","clothes>small_men","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats","clothes>small_men>hats"];
    $( "input[name=product]" ).autocomplete({
        source: productTags
    }); 
}
$(document).ready(function(){
    prod_autocomplete();
    cat_autocomplete();
});
</script>

edit: php file

<?php 
session_start();
try{
    require_once "../../classes/config.php";
    require_once "../../classes/database.php";
    require_once "../../classes/categories.php";
    require_once "../../classes/global_data.php";
    $cOb = new config();
    $cOb->set_mode(0);
    $cOb->set_table_prefix( 'lazy' );
    $cOb->dbdetails(array( 'dbuser' => '', 'dbpass' => '', 'dbserver' => 'localhost', 'dbname' => 'test' ) );
    $cOb->set_srv_root( 'C:/wamp/www/ecom_framework/' );
    $cOb->set_sec_root( 'http://localhost/ecom_framework/' );
    $cOb->set_web_root( 'http://localhost/ecom_framework/' );
    $con = Database::getInstance( $cOb );
    ob_start(); 
?>
<script type="text/javascript">
    function cat_autocomplete(){
        var categoryTags = [<?php
            $con = Database::getInstance();
            $sql = "SELECT cat_id FROM `" . $cOb::$table_prefix . "_tbl_category` ORDER BY cat_name";
            $re = $con->query($sql);
            $str = '';
            while( $ob = $re->fetch_object() ) {
                $str .= '"' . categories::get_breadcrum_from_id( $ob->cat_id, '>' ) . '",'; 
            }
            echo rtrim( $str, ',' ) . "];\n";
            ?>
        $( "input[name=category]" ).autocomplete({
            source: categoryTags
        });
    }
    function prod_autocomplete(){
        var productTags = [<?php
            $con = Database::getInstance();
            $sql = "SELECT cat_id, pd_name FROM `" . $cOb::$table_prefix . "_tbl_product` ORDER BY pd_name";
            $re = $con->query($sql);
            $str = '';
            while( $ob = $re->fetch_object() ) {
                $str .= '"' . categories::get_breadcrum_from_id( $ob->cat_id, '>' ) . '",'; 
            }
            echo rtrim( $str, ',' );
            ?>];
        $( "input[name=product]" ).autocomplete({
            source: productTags
        }); 
    }
    $(document).ready(function(){
        prod_autocomplete();
        cat_autocomplete();
    });
    </script>
    <?php 
    $content = ob_get_clean(); 
    header("Content-type: text/javascript");
    echo $content;
    exit;
}catch(Exception $err){
    die( $cOb->mode( $err->getMessage() ) );    
}
    ?>

1 Ответ

0 голосов
/ 26 января 2011

Попробуйте без ключевого слова var перед categoryTags. Я думаю, что ваша проблема заключается в объеме Javascript. Используя ключевое слово var перед инициализацией categoryTags, оно входит в область действия функции cat_autocompete. Однако $ (). Autocomplete не входит в область действия этой функции. $ (). autocomplete ищет категорию Tag в своей области видимости и, не найдя ее там, ищет ее в области окна. Удалив ключевое слово var в функции cat_autocomplete, CategoryTags будет привязан к области видимости окна и будет доступен для $ (). Autocomplete.

function cat_autocomplete(){
 categoryTags = ["foo","bar"];
 $( "input[name=category]" ).autocomplete({
  source: categoryTags
 });
}

Предостережение ко всему вышесказанному: засорение глобального пространства имен - не лучший способ приблизиться к вещам. Тем не менее, изложение лучшего способа выходит за рамки этого ответа. Надеюсь, это поможет.

...