9

Używam autouzupełniania jQuery i działa poprawnie, teraz chcę zapisać zmienną w sesji z jQuery, gdy wystąpi następujący warunek.Autouzupełnianie jquery przy wybranym zdarzeniu

Gdy ktoś wpisze dowolne słowo jQuery wyświetli listę sugestii, jeśli ktoś wybierze element z rozwijanej listy sugestii.

Chcę przechwycić powyższy punkt i zapisać zmienną w sesji.

Przeszukałem Google, StackOverflow, ale nie znalazłem odpowiedniego rozwiązania. Mój kod do autouzupełniania jest następujący:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true 
}); 

i to, co starałem się zrobić:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true, 
    select: function (a, b) { 
     alert("selected"); 
    } 

}); 

EDIT: teleskopowa Wybierz wydarzenie jest również nie działa

używam asp. netto MVC3 z C#. Proszę, pomóżcie mi i dziękuję z góry.

+0

sprawdź konsolę błędów, co mówi ...? –

+0

nic nie wyświetla w konsoli @Anant –

+0

@smartboy Jakie są używane biblioteki jquery? –

Odpowiedz

15

Więc jeśli dobrze rozumiem chcesz zapisać wybraną wartość w zmiennej sesji

można uzyskać wartość z wybranego elementu poprzez następujący kod:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
minChars: 1, 
width: 402, 
matchContains: "word", 
autoFill: true, 
select: function (event, ui) { 
    var label = ui.item.label; 
    var value = ui.item.value; 
    //store in session 
    document.valueSelectedForAutocomplete = value 
} 
}); 

wartości i etykiety są obiekty JSON, który pochodził z serwerem

Nadzieja to pomaga

+1

Wybrane zdarzenie nie działa tak, jak mówiłem w moim pytaniu, i spróbowałem ponownie, ale nie udało mi się uzyskać sukcesu. –

+1

Dlaczego wybrany program obsługi nie działa? –

1

dobrze, jeśli chcesz przechowywać w sesji przy użyciu asp.net mvc3 następnie zrobić następujące

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true, 
    select: function (event, ui) { //must be cleared with function parameter 
     //alert(ui.item.label); //will show you the selected item 

     $.ajax({ 
      type: 'POST', 
      url: '/Controller/Action1', //whatever any url 
      data: {label: ui.item.label}, 
      success: function(message) { if(message.data == true) ... else ... }, 
      dataType: 'json' 
     }); 

    } 

}); 

i kontroler

[HttpPost] 
    public JsonResult Action1(string label) { 

    this.Session["AnyValue"] = label; 

    return Json(new { 
     data = true 
    }, JsonRequestBehavior.AllowGet); 
    } 
+0

Nie myśl, że potrzebujesz ustawienia JsonRequestBehavior.AllowGet, ponieważ jest ono filtrowane jako HTTPPOST –

+0

Jest opcjonalne (JsonRequestBehavior.AllowGet) –

-2

Twój tytuł pytanie wygląda nudne, ale według opisu rozumiem Twoje pytanie. Teraz weź pod uwagę te punkty:

  1. sesje są na serwerze.
  2. Zdarzenie click jest po stronie klienta.

Teraz należy wysłać powiadomienie od klienta do serwera o tym samym. Można to osiągnąć poprzez ajax w następujący sposób:

  1. bind ".autosearch-smart" do kliknięcia(), a wewnątrz kliknij Dokonaj ajax() wniosek do określonego adresu URL na swojej stronie ze znakowanym parametru kliknięciu = true np. yoursite.com/sessionsettercontroller?clicked=true

  2. po stronie serwera w sesji setterter kontroler dla klikniętego = true, a następnie ustaw zmienną na SESSION.

Powiązane problemy