用jquery在smarty模板上显示搜索结果


display search result with jquery on smarty template

我试图在smarty模板上显示<div>的搜索结果。点击搜索结果。

锚点是:

<li class="price-list-item"><a href="javascript:void();" class="price" onclick="searchRange(0,1000)">0-1000</a></li>

和searchRange函数如下:

function searchRange(first, second) {    
    var first = first;
    var second = (second != null) ? second : first; 
    $("#ad-display").load("index.php?first="+first+"&second="+second+" #ad-display");
}

adlistdisplay.tpl写的广告显示框看起来像这样:

<div id="ad-display">
    <section id="add-list">
        <ul id="ad-list">
        {foreach from=$adverts key=k item=i name=ad_list}
            <li class="ad-list-item-{cycle values="odd,even"}" id="ad-{$i.aid}">
                <div class="ad-item-box">
                    <div class="ad-item-photo">
                        <a href="viewad.php?aid={$i.aid}"><img src="adimages/{$i.img}" width="80" height="80"></a>
                    </div>
                    <div class="ad-item-info">
                        <span class="ad-item-title"><a href="viewad.php?aid={$i.aid}">{$i.title}</a></span>
                        <span class="ad-item-desc">{$i.text|truncate:25}</span>
                        <span class="ad-item-price">Kr. {$i.price|number_format:2:",":"."}</span>
                    </div>
                </div>
            </li>  
        {/foreach}
        </ul>                            
    </section>
</div>

在我的index.php中有如下代码:

$adverts = new Adverts();
$smarty->assign('catlist', $adverts->getcategories());
SmartyPaginate::assign($smarty);
if(isset($_GET["first"])) {
    $search = new SearchEngine();    
    $smarty->assign('adverts', $search->search_ads(null, "price", $_GET["first"], $_GET["second"]));    
} else {
    $smarty->assign('adverts', $adverts->listadverts());    
}
$smarty->display('index.tpl');

索引。TPL包含以下内容:

{include file="adlistdisplay.tpl"}

当我点击顶部的锚点时,它只在#ad-display处显示一个空白点。无结果显示。我希望它显示search_ads函数的结果。它看起来像这样:

function search_ads($search_string = null, $type, $min_price = null, $max_price = null) {
        global $db;
        global $config;
        switch($type) {
            case "text":
                $search = 'text LIKE "%'. $search_string .'%"';
                break;
            case "price":
                $search = 'price > '. $min_price .' <= '. $max_price .'';
                break;
            case "headline":
                $search = 'title LIKE "%'. $search_string .'%"';
                break;
            default:
                $search = 'price BETWEEN '. $min_price .' AND '. $max_price .'';
                break;
        }
        $row = $db->dbh->query('SELECT ad.*, (SELECT img.image FROM '.$config->db_prefix.'_images img WHERE img.aid = ad.aid LIMIT 1) AS img FROM '.$config->db_prefix.'_adverts ad WHERE '. $search .' AND ad.approved = 1');        
        $row->setFetchMode(PDO::FETCH_ASSOC);
        return $row;
    }  

我创造了这个小提琴来展示我想要实现的目标。虽然有点不同,但却表明了我的意图。

http://jsfiddle.net/xeAkY/20/

解决方案:

$search = 'price > '. $min_price .' AND price <= '. $max_price .'';

问题底部的解决方案