Rufen Sie einen web-Methode mit Hilfe von jQuery Ajax
Ich möchte erstellen Sie eine Autocomplete
Feld für eine Suchfunktion. Ich habe versucht mit folgenden code.
Aber die web-Methode nicht Feuer, wenn die Autocomplete
Funktion ist die Ausführung.
Was wird der Grund sein ?
Hier ist die jQuery-Funktion:
<script type="text/javascript">
$(function () { $("#<%=tags.ClientID %>").autocomplete({
source:function (request, response) {
$.ajax ({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "~/Services/AutoComplete.asmx/GetFarmersByName",
data: "{ 'name' : '" + $("#<%=tags.ClientID %>").val() + "'}",
dataType: "json",
async: true,
dataFilter: function (data) { return data; },
success: function (data) {
response($(data.d, function (item) {
return {
value: item.AdrNm
}
}));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
});
});
</script>
Hier ist die web-Methode
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<FMISPersonalDataViewByName_Result> GetFarmersByName(string name)
{
this._personalData = new personalData();
int cky = 45;
CdMa cdMas = new CdMa();
cdMas = this._personalData.getcdMasByConcdCd2(cky, "AdrPreFix", true);
int prefixKy = cdMas.CdKy;
List<FMISPersonalDataViewByName_Result> list = new List<FMISPersonalDataViewByName_Result>();
list = this._personalData.GetPersonalDataByName(prefixKy, cky, name);
return list;
}
- Versuchen Sie, einschließlich der Verwendung dieses Attribut
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
- Der debugger erreichen
AutoComplete.asmx
?? - Über Ihre service-Klasse hinzufügen [System.Web.Script.Services.ScriptService]
- Ich denke, dass web-Methoden müssen Statisch sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, Sie trifft den webservice-Funktion, indem er breakpoint auf Ihre service-Funktion. Bitte ändern Sie Ihr Skript unter:
Vorausgesetzt
tags
wie deine textbox festlegen von Daten als{ 'name': '" + request.term + "'}
debug-on-Methode GetFarmersByName,
HINWEIS: Check haben Sie kommentieren Sie
[System.Web.Script.Services.ScriptService]
auf .asmx-Seite.[System.Web.Script.Services.ScriptService]
im ur asmx.csOben Ihre service-Klasse hinzufügen
[System.Web.Script.Services.ScriptService]
Oder Sie können dies in einem asp.net Seite!
fügen Sie das Schlüsselwort "static" und ändern Sie den webservice zur ASP.NET Seite!
Beispiel:
A. aspx:
Dann in Ihrer A. aspx.cs geben:
Post wieder!!!!!
Test.aspx:
Test.asmx:
Fügen Sie diese Methode in der code-behind-Datei, wo Sie Sie diese Methode aufrufen. Ändern Sie die url zu url: "Test.aspx/GetFarmersByName" und dann zu testen. Es ist viel sauberer code dann eher Web-Service.
versuchen, diese -
und die webmethod-