887 messaggi dal 21 marzo 2008
Ciao a tutti
vorrei inserire in una pagina l'autocomplete di jquery caricando i dati con ajax.
Ho fatto così:

$(function() {
            $(".auto-city").autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: "/Handler/ajaxAutocomplete.ashx",
                        data: { "type" : "citta", "q": request.term },
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        dataFilter: function(data) { return data; },
                        success: function(data) {
                            response($.map(data.d, function(item) {
                                return {
                                    value: item.Comune
                                }
                            }))
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            
                        }
                    });
                },
                minLength: 2
            });
        });


 
<%@ WebHandler Language="C#" Class="ajaxAutocomplete" %>

using System;
using System.IO;
using System.Web;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Data;
using System.Linq;
using System.Linq.Expressions;

public class ajaxAutocomplete : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Expires = -1;

        string result = string.Empty;
        string type = context.Request["type"];
        string q = string.Empty;

        q = context.Request.Form["term"].Trim();
        JavaScriptSerializer ser = new JavaScriptSerializer();
        switch (type)
        {
            case "citta":
                List<tipoComune> comuni = CittaProvinceNazioni.CittaProvincia(string.Empty);

                result = ser.Serialize(comuni.Where(item => item.Comune.ToLower().StartsWith(q.ToLower())));
                break;
                
            default:
                break;
        }

        context.Response.ContentType = "text/plain";
        context.Response.Write(result);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

    private void LogRequest(string Log)
    {
        //StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath("/Log") + "\\Log.txt", true);
        //sw.WriteLine(DateTime.Now.ToString() + " - " + Log);
        //sw.Flush();
        //sw.Close();
    }
}


Il problema è che non riesco a passare i parametri al file ashx.
q = context.Request.Form["term"].Trim() mi restituisce null.
Dove sbaglio?
Grazie mille
14 messaggi dal 12 dicembre 2001
Ciao

Prva con: q = context.Request.QueryString["term"].Trim()

Ciao

Matteo
887 messaggi dal 21 marzo 2008
Ciao e grazie
continuo a riceve ancora errore.
Non hai un esempio che funzioni di autocomplete?
Grazie mille
30 messaggi dal 13 febbraio 2012
Apportando detta modifica nella console di firebug compare questo errore

ReferenceError: context is not defined

...a pagina per visualizzare il sorgente del seguente URL:: http://localhost:50546/...
14 messaggi dal 12 dicembre 2001
Ecco un esempio:

ASPX:

jq("#searchGlobal").autocomplete({
minLength: 3,
source: function(request, response) {
jq.ajax({
url: DIR + "/core/AutocompleteData.ashx,
dataType: "json",
data: {
campoFiltro: radioCheckAutocomplete,
valoreFiltro: request.term
},
success: function(data) {
response(jq.map(data, function(item) {
return {
......
}
}));
}
});
},
select: function(event, ui) {
......
}
});

ASHX

public class AutocompleteData : IHttpHandler {

JavaScriptSerializer serializer = new JavaScriptSerializer();
string lang = "";
string scenario = "";

public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "application/json";
string currentValueSerch = context.Request.QueryString["valoreFiltro"];
string campo = context.Request.QueryString["campoFiltro"];
............
}


public bool IsReusable {
get {
return false;
}
}


}

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.