Youhana Ответов: 1

Проблема в автозаполнении suggession


У меня есть окно поиска на сайте электронной коммерции я пытался сделать его автозавершенным с предложением но напрасно код не работал хорошо со мной урожденная ваша помощь пожалуйста

Что я уже пробовал:

<html xmlns="http://www.w3.org/1999/xhtml">
&ЛТ;глава атрибут runat="сервер"и GT;
<meta charset="utf-8" />
в <мета НТТР-экв="х-УА-совместимый" содержание="т. е.=края" /&ГТ;
в <мета имя="область просмотра" содержимого="ширина=устройство-ширина, начально-масштаб=1" /&ГТ;
<!-- Вышеупомянутые 3 мета-тега *должны* быть первыми в голове; любое другое содержание головы должно быть *после* этих тегов -->
в <название>у дома&ЛТ;/название&ГТ;
&ЛТ;скрипт СРЦ="js/jquery-3.2.1.min.js"&ГТ;&ЛТ;/скрипт>
&ЛТ;скрипт СРЦ="jquery-ui.min.js"&ГТ;&ЛТ;/скрипт>
&ЛТ;скрипт СРЦ="jquery-ui.js"&ГТ;&ЛТ;/скрипт>
<link href="jquery-ui.css" rel="таблица стилей" />
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="таблица стилей" />
<link href="https://fonts.googleapis.com/css?family=Rakkas&display=swap" rel="таблица стилей"/>
<link href="https://fonts.googleapis.com/css?family=Amiri&display=swap" rel="таблица стилей"/>
<link href="css/Custom-Cs.css" rel="таблица стилей" />

<!-- HTML5 прокладка и Respond.js для IE8 поддержка элементов HTML5 и медиа-запросов -->
<!-- Предупреждение: Respond.js не работает, если вы просматриваете страницу через Файл:// -->
<!--[если lt IE 9]>
&ЛТ;скрипт СРЦ="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"&ГТ;&ЛТ;/скрипт>
&ЛТ;скрипт СРЦ="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"&ГТ;&ЛТ;/скрипт>
<![endif]-->
<скрипт>
$(документ).готово(функция myfunction() {
$("#btnCart").click(функция myfunction() {
окно.местоположение.href = "/MyCart.aspx";
});
});
</script>
<script type="text/javascript">
$(документ).готово(функция () {
$('#TxtSrc').автозаполнение(
{ источник: 'ProductHandler.ashx' });
});
</script>
</head>
<тело>
&ЛТ;форма атрибут runat="сервер"и GT;
<div class="row text-center" style="padding-top:60px;padding-bottom:20px">
&ЛТ;див класс="коль-ЛГ-4" &ГТ;&ЛТ;/дел&ГТ;

<div class="col-lg-4" >
<div class="input-group">
&ЛТ;промежуток класс="входные-группы-БТН"&ГТ;
<button class="btn btn-danger" type="button">بحث!</button>
</span>

&ЛТ;ИД входного="TxtSrc" тип="текст" класс="форма контроля" атрибут runat="сервер" автозаполнение="на" /&ГТ;


</div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
</div>
&ЛТ;див класс="коль-ЛГ-4" &ГТ;&ЛТ;/дел&ГТ;
</форма>
<!--- нижний колонтитул -->

&ЛТ;скрипт СРЦ="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"&ГТ;&ЛТ;/скрипт>
&ЛТ;скрипт СРЦ="js/bootstrap.min.js"&ГТ;&ЛТ;/скрипт>
</body>

</html>



этот обработчик данного
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.Script.Serialization;

namespace Mypro
{
    /// <summary>
    /// Summary description for ProductHandler
    /// </summary>
    public class ProductHandler : IHttpHandler
    {
        Business_Layer.BS_Layer BSS = new Business_Layer.BS_Layer();
        public void ProcessRequest(HttpContext context)

        {
            string Term = context.Request["term"] ?? "";
            List< string> listProduct = new List<string> ();
            BusinessObject_Layer.BO_Layer objbo = new BusinessObject_Layer.BO_Layer
            {
              ProName=Term
            };
            DataTable dt_Products = BSS.SearchBoxProduct(objbo);
            listProduct = dt_Products.AsEnumerable().Select(r => r.Field<string>("PName")) .ToList();

            JavaScriptSerializer js = new JavaScriptSerializer(); context.Response.Write(js.Serialize(listProduct));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }

and this StoreProcedure 

alter proc SearchBoxitem 
@PName nvarchar(100)
as

select PName from tblProducts where PName like '%'+ @PName +'%'


and Business Layer Code 

 public DataTable SearchBoxProduct(BusinessObject_Layer.BO_Layer objbo)
        {


            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("@PName", SqlDbType.NVarChar,100)
            {
                Value = objbo.ProName
            };
           

            Dal.Open();
            DataTable dt = new DataTable();
            dt = Dal.SelectData("SearchBoxitem", param);
            return dt;
        }
        }
    }
}

Patrice T

определите "код не работал хорошо"

Youhana

я выполнить код обработчика данного бросить его waork хорошо
http://localhost:60218/ProductHandler.ashx?term=م
Результаты
كاش مزيكا","مقلم","كاش مزيكا","كاش مزيكا","بوما","مكواه شعر","مكواه شعر","مكت","مكت","مكواه شعر","مكواه شعر"]

Youhana

я попробовал отдельную страницу она работает нормально и дала мне точный результат я думаю что есть ошибка в html странице но напрасно я не могу ее найти

1 Ответов

Рейтинг:
1

Richard Deeming

Вы пытаетесь вызвать функцию jQuery до скрипт jQuery был загружен. Если вы используете инструменты разработчика Вашего браузера, вы увидите ошибку скрипта в консоли, сообщающую вам, что функция $ не определено.

Переместите свой инлайн <script> блок в нижней части страницы, между bootstrap.js сценарий и закрытие </body> метка.

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>

    <script>
    $(function(){
        $("#btnCart").click(function myfunction() {
            window.location.href = "/MyCart.aspx";
        });
        $('#TxtSrc').autocomplete({ 
            source: 'ProductHandler.ashx' 
            // NB: This assumes that the handler is in the same directory as the current page.
        });
    });
    </script>
</body>

Если он все еще не работает, используйте инструменты разработчика Вашего браузера для поиска ошибок Javascript и мониторинга сетевых запросов.

Также обратите внимание:

jQuery предлагает несколько способов прикрепить функцию, которая будет работать, когда DOM будет готов. Все следующие синтаксисы эквивалентны:
  • $( handler )
  • $( document ).ready( handler )
  • $( "document" ).ready( handler )
  • $( "img" ).ready( handler )
  • $().ready( handler )

Начиная с jQuery 3.0, рекомендуется использовать только первый синтаксис; другие синтаксисы все еще работают, но устарели. Это происходит потому, что отбор не имеет никакого отношения к поведению объекта. .ready() метод, который неэффективен и может привести к неверным предположениям о поведении метода.