Searchbox Error - Front- & Back-End Development - Front- & Back-End Development - Progress Community
 Front- & Back-End Development

Searchbox Error

  • Searchbox Error
  • f97a541e-37c1-6deb-a958-ff0000446526_searchbox_error.png

    I am getting a weird search box error when trying to search. 

    I created a blank page (Start from scratch) and still get this error. (MVC)

  • Hello Decker,

    I just wanted to add this answer to your forum post in case someone else runs into this issue as I see it was answered in your support ticket you filed.

    This issue occurs due to a Javascript error in the Digital Experience Cloud module, disabling this module will fix this issue.  Currently this is the only workaround available and the issue is being investigated by our development engineers.

    Regards,
    Nick Rajotte
    Telerik
     
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
     
  • Hey Decker,

    Have you guys found a workaround for this?  We are using DEC and can't shut it off.

  • I am running into this as well.  We are using DEC and can't disable it.

    The SearchBox runs fine in preview but I get that "sentence.object" error when I navigate to the page itself.

    All I have is a blank page with the SearchBox widget on it.

     

     

  • Hi Matthew. I can suggest one solution for you. If you are using Feather.

    1) Place attached search-box-without-dec.js somewhere

    (function ($)
        $(document).ready(function ()
            var searchBoxIdFields = $('[data-sf-role="searchTextBoxId"]');
     
            for (var i = 0; i < searchBoxIdFields.length; i++)
                var searchBoxIdField = $(searchBoxIdFields[i]);
                var controlServerData =
                    resultsUrl: searchBoxIdField.siblings('[data-sf-role="resultsUrl"]').first().val(),
                    indexCatalogue: searchBoxIdField.siblings('[data-sf-role="indexCatalogue"]').first().val(),
                    wordsMode: searchBoxIdField.siblings('[data-sf-role="wordsMode"]').first().val(),
                    disableSuggestions: $.parseJSON(searchBoxIdField.siblings('[data-sf-role="disableSuggestions"]').first().val()),
                    minSuggestionLength: searchBoxIdField.siblings('[data-sf-role="minSuggestionLength"]').first().val(),
                    suggestionFields: searchBoxIdField.siblings('[data-sf-role="suggestionFields"]').first().val(),
                    language: searchBoxIdField.siblings('[data-sf-role="language"]').first().val(),
                    suggestionsRoute: searchBoxIdField.siblings('[data-sf-role="suggestionsRoute"]').first().val(),
                    searchTextBoxSelector: searchBoxIdField.val(),
                    searchButtonSelector: searchBoxIdField.siblings('[data-sf-role="searchButtonId"]').first().val()
                ;
                featherSearchBoxWidget(controlServerData);
            
     
            function featherSearchBoxWidget(serverData)
                var searchTextBox = $(serverData.searchTextBoxSelector),
                        searchButton = $(serverData.searchButtonSelector);
     
                searchButton.click(navigateToResults);
                searchTextBox.keypress(keypressHandler);
     
                /* Initialization */
                if (!serverData.disableSuggestions)
                    searchTextBox.keyup(keyupHandler);
     
                    try
                        searchTextBox.autocomplete(
                            source: [],
                            messages:
                                
                                    noResults: '',
                                    results: function ()
                                ,
                            select: function (event, ui)
                                searchTextBox.val(ui.item.value);
                                navigateToResults(event);
                            ,
                        ).autocomplete("widget").addClass("sf-autocomplete");
                     catch (e)
                        // Fixes jQuery bug, causing IE7 to throw error "script3 member not found".
                        // The try/catch can be removed when the bug is fixed.
                    
                
     
                /* Event handlers */
                function keypressHandler(e)
                    if (!e)
                        e = window.event;
     
                    var keyCode = null;
                    if (e.keyCode)
                        keyCode = e.keyCode;
                    
                    else
                        keyCode = e.charCode;
                    
     
                    if (keyCode == 13)
                        navigateToResults(e);
                    
                
     
                function suggestionsSuccessHandler(result, args)
                    var dataSource = result.Suggestions;
                    searchTextBox.autocomplete('option', 'source', dataSource);
     
                    searchTextBox.autocomplete("search", searchTextBox.val().trim());
                
     
                function keyupHandler(e)
                    if (e.keyCode != 38 &&  // up arrow
                        e.keyCode != 40 && // down arrow
                        e.keyCode != 27) // esc
                        // When the auto complete menu is shown, only this event is detected
                        if (e.keyCode == 13)
                            // when enter is pressed
                            navigateToResults(e);
                        
     
                        var request = ;
                        var searchText = searchTextBox.val().trim();
                        if (searchText.length >= serverData.minSuggestionLength)
                            request.IndexName = serverData.indexCatalogue;
                            request.SuggestionFields = serverData.suggestionFields;
                            request.Text = searchText;
                            request.Language = serverData.language;
     
                            $.ajax(
                                type: "GET",
                                url: serverData.suggestionsRoute,
                                dataType: 'json',
                                data: request,
                                success: suggestionsSuccessHandler
                            );
                        
                    
                
     
                /* Helper methods */
                function navigateToResults(e)
                    if (!e)
                        e = window.event;
     
                    if (e.stopPropagation)
                        e.stopPropagation();
                    
                    else
                        e.cancelBubble = true;
                    
                    if (e.preventDefault)
                        e.preventDefault();
                    
                    else
                        e.returnValue = false;
                    
     
                    var query = searchTextBox.val();
     
                    if (query && query.trim() && serverData.indexCatalogue)
                        window.location = getLocation();
                    
                
     
                function getLocation()
                    var query = searchTextBox.val().trim();
     
                    var separator = (serverData.resultsUrl.indexOf("?") == -1) ? "?" : "&";
     
                    var catalogueParam = separator + "indexCatalogue=" + encodeURIComponent(serverData.indexCatalogue),
                        searchQueryParam = "&searchQuery=" + encodeURIComponent(query),
                        wordsModeParam = "&wordsMode=" + serverData.wordsMode;
     
                    var url = serverData.resultsUrl + catalogueParam + searchQueryParam + wordsModeParam;
     
                    return url;
                
     
                function sendSentence()
                    if (window.DataIntelligenceSubmitScript)
                        DataIntelligenceSubmitScript._client.sentenceClient.writeSentence(
                            predicate: "Search for",
                            object: searchTextBox.val(),
                            objectMetadata: [
                                'K': 'PageUrl',
                                'V': location.href
                            ]
                        );
                    
                
            
        );
    (jQuery));

    2) Override searchbox view. Put SearchBox.cshtml to ResourcePackages\YOUR PACKAGE\MVC\Views\SearchBox\SearchBox.cshtml

    @model Telerik.Sitefinity.Frontend.Search.Mvc.Models.ISearchBoxModel
     
    @using Telerik.Sitefinity.Services;
    @using Telerik.Sitefinity.Modules.Pages;
    @using Telerik.Sitefinity.Frontend.Mvc.Helpers;
     
    @
        var searchTextBoxId = Guid.NewGuid();
        var searchButtonId = Guid.NewGuid();
     
     
    @(!String.IsNullOrEmpty(Model.CssClass) ?
        Html.Raw(String.Format("<div class=\"0 form-inline\">", Model.CssClass)) :
        Html.Raw("<div class=\"form-inline\">"))
        <div class="form-group">
            <input type="search" title="@Html.Resource("SearchInput")" placeholder="@Model.BackgroundHint" id="@Html.Raw(searchTextBoxId)" class="form-control" value="@Html.Raw(ViewBag.SearchQuery)"/>
        </div>
        <button type="button" class="btn btn-primary" id="@Html.Raw(searchButtonId)">@Html.Resource("SearchLabel")</button>
         
        <input type="hidden" data-sf-role="resultsUrl" value="@Html.Raw(Model.ResultsUrl)" />
        <input type="hidden" data-sf-role="indexCatalogue" value="@Html.Raw(Model.IndexCatalogue)" />
        <input type="hidden" data-sf-role="wordsMode" value="@Html.Raw(Model.WordsMode.ToString())" />
        <input type="hidden" data-sf-role="disableSuggestions" value='@(Model.DisableSuggestions ? Html.Raw("true") : Html.Raw("false"))' />
        <input type="hidden" data-sf-role="minSuggestionLength" value="@Html.Raw(Model.MinSuggestionLength)" />
        <input type="hidden" data-sf-role="suggestionFields" value="@Html.Raw(Model.SuggestionFields)" />
        <input type="hidden" data-sf-role="language" value="@Html.Raw(Model.Language)" />
        <input type="hidden" data-sf-role="suggestionsRoute" value="@Html.Raw(Model.SuggestionsRoute)" />
        <input type="hidden" data-sf-role="searchTextBoxId" value='@("#" + searchTextBoxId.ToString())' />
        <input type="hidden" data-sf-role="searchButtonId" value='@("#" + searchButtonId.ToString())' />
    </div>
     
    @* The inline editing functionality is loading jQuery too. *@
     
    @Html.Script(ScriptRef.JQuery, "top", true)
    @Html.Script(ScriptRef.JQueryUI, "top", true)
     
    @Html.Script("Mvc/Scripts/SearchBox/search-box-without-dec.js", "bottom")

    3) Fix path to search-box-without-dec.js inside this view