jQuery ajax autocomplete problem Smarty error: unable to read resource

Hi,

ich habe mittels jQuery und ajax eine Autovervollständigung in die Suche eingebaut.

Mein Javascript:


        var obj = $('#searchParam').autocomplete({
            autoFocus: false,
            minLength: 4,
            source: function( request, response ) {
                $.ajax({
                    url: 'http://meineshopadresse.de/index.php?cl=my_ajax_cl',
                    dataType: "json",
                    contentType: "application/x-www-form-urlencoded; charset=utf-8",
                    data: {
                        name_startsWith: request.term,
                        type: 'search'
                    },
                    success: function( data ) {
                        response( $.map( data, function( item ) {
                            return {
                                label: item.label,
                                value: item.value,
                                url:  item.url
                            }
                        }));
                    }
                });
            },
            select: function( event, ui ) {
                if (ui.item.url) {
                    window.location.href = ui.item.url;
                }
            }
        }).data("ui-autocomplete");
        obj && (obj._renderItem = function (ul, item) {
        //Add the .ui-state-disabled class and don't wrap in <a> if value is empty
            if(item.value ==''){
                return $('<li class="ui-state-disabled">'+item.label+'</li>').appendTo(ul);
            }else{
                return $("<li>")
                .append("<a>" + item.label + "</a>")
                .appendTo(ul);
            }
        });

Mein passender Controller sieht gekürzt so aus
(es wurden nur die Datenbank abfragen weggekürzt):


<?php
class my_ajax_cl extends oxubase
{
    public function render()
    {
        parent::render();

        /* Teil der Datenbankabfrage weggekürzt aus Platzgründen 
            $result ist ein Array welches das Ergebniss der Datenbankabfragen enthält. */

            if(empty($results)) {
                $results = Array();
                $this->renderJson($results);
            } else {
                $this->renderJson($results);
            }
        }
    }

    function renderJson($json) {
        ini_set('display_errors', 0);
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
        header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
        header("Cache-Control: no-cache, must-revalidate" );
        header("Pragma: no-cache" );
        header("Content-type: text/json");
        echo json_encode($json);
        return null;
    }  
}
?>

Das ganze funktioniert auch soweit. Er zeigt mir Ergebnisse an.
Leider spuckt er mir im php.log folgenden Fehler aus:

[B]PHP Warning: Smarty error: unable to read resource: “” in /srv/www/htdocs/core/smarty/Smarty.class.php on line 1093[/B]

Wie kann ich diesen "Fehler beheben? Habe dazu leider nichts in google gefunden und auch nicht im Forum.

render() muss den Namen einer template Datei zurückgeben und kein null

Also in diesem fall:

return /widget/header/search.tpl';

oder wie meinst du das? (das habe ich eben so getestet funktioniert auch nicht)
Es kommt zwar kein Fehler mehr, dafür aber auch kein Autovervollständigungsergebniss.

Du kannst das Template auch weglassen wenn du render() einfach mit exit() beendest.

funktioniert die Anzeige überhaupt wenn man oxubase erweitert? Kann leider fern von der Zivilisation nicht testen

Danke leofonic deine Lösung funktioniert einwandfrei. Keine Fehlermeldung mehr!! :slight_smile:
Danke vanilla thunder für deine Bemühung.

Ja die Anzeige hat die ganze Zeit funktioniert und Probleme gab es auch keine, nur die Fehlermeldung kam halt die ganze Zeit und störte mich.

Trotzdem würde mich jetzt noch interressieren wie ich das Template hätte angeben müssen? Oder wie es andere machen. (für den Fall das ich es später nochmal brauchen sollte.) :slight_smile:

( /widget/header/search.tpl beinhaltet das javascript welches den suchstring an den controller schickt. Dieser sucht die Passenden Artikel aus der Datenbank stellt sie in ein Array und sendet es als json zurück and javascript welches es verarbeitet und anzeigt)