2010-12-24 13 views
1

Ich habe ein seltsames Problem. Ich versuche, jQuery Autocomplete mit Asmx Web Service zu verwenden. Mein JavaScript-Code ist als:jQuery AutoComplete mit Asmx Problem

$('#txtUsers').autocomplete('AjaxHandler.asmx/GetUserData', { 
    width: 320, 
    max: 5, 
    minChars: 3, 
    parse: function(data) { 
     var items = data.d; 
     var parsed = []; 
     for (var i = 0; i < items.length; i++) 
      parsed.push({ 
      data: [items[i]], 
      value: items[i], 
      result: [items[i]] 
     }); 
     return parsed; 
    } 
}); 

und meine Web-Service-Code ist:

[WebService] 
[ScriptService] 
public class AjaxHandler : WebService 
{ 
    [WebMethod] 
    public List<UserData> GetUserData(string q) 
    { 
     //My code here..... 
    } 
} 

jedoch meine Web-Methode wird nicht von der automatischen Vervollständigung aufgerufen wird. Wenn ich jedoch versuche, dieselbe Webmethode von jQuery.ajax aufzurufen, wird sie korrekt ausgelöst. Irgendeine Hilfe?

Antwort

1

Ich überprüft, dass Autocomplete senden Anfrage erhalten, aber Sie akzeptieren nur Postanforderungen. Also, ich sehe, dass du es auch gefunden hast.

Ich schlage vor, verwenden Sie einfach HttpHandler, und geben Sie Daten als Json mit newton json serializer, weil Sie Web-Service retun 'Wrapped' Daten. Es sollte sehr einfach Handler sein:

List<UserData> items = GetUserDataItems(); 
string json = JsonConvert.SerializeObject(items); 

// retrun json an den Client

Auch bei Client-Code-Satz-Datentyp json:

dataType: "json", 

Und analysieren wie folgt aus:

parse: function (data) { 
    return $.map(data, function (row, i) { 
     return { 
      data: row, 
      value: row, 
      result: row 
     } 
    }); 
}, 
+0

Mein Problem ist nicht JSON-Daten. Mein Problem ist, dass die Web-Service-Methode nicht von Autocomplete aufgerufen wird, wo sie von $ .ajax perfekt aufgerufen wird. – Ashish

+0

Sind Sie sicher, dass Ihre Methode nicht von aocomplete aufgerufen wurde? Haben Sie den Debug-Dienst ausprobiert, wenn die automatische Vervollständigung funktioniert? Scheint problematisch, da Autocomplete Daten nicht analysieren kann. Aber es ist nur ein Hinweis darauf, dass es falsch sein könnte. –

+0

Versuchen Sie einfach json zu senden, es ist einfach und ich bin mir sicher, dass es funktionieren wird. –

1

Ja, ich stehe auch mit diesem Problem. Weder ScriptService noch ScriptMethod helfen bei der automatischen Vervollständigung. Die einfachste Arbeit ist umwandeln Sie Ihre .asmx in .ashx und verwalten Sie Rückgabeergebnis, wie es von AJAX-Plugin mit Hilfe von JSON-Serializer erwartet wird.

+0

Danke für den Vorschlag. Allerdings wurde Problem, indem gelöst in web.config – Ashish

+0

@Ashish danke für nützlichen Kommentar! – Dewfy