Ajax后返回错误
本文关键字:错误 返回 Ajax | 更新日期: 2023-09-27 18:17:33
当我发布到我的asmx web服务时,返回这个错误:
无法创建类型'myProjectName.AutoCompleteWebService'.
我在StackOverflow和许多其他网站上尝试了所有答案,但没有一个适合我的情况。
JQuery$("#txtSearchKeyWord").autocomplete({
source: function (request, response) {
$.ajax({
url: "AutoCompleteWebService.asmx/IndentifySearch",
data: "{ 'keyWord': '" + request.term + "','Lang': 'En' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
$(currentElement).css({ "background": "rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box" });
response($.map(data.d, function (item) {
return {
value: item
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
open: function (event, ui) {
//$(".ui-autocomplete").css("left", (parseInt($(".ui-autocomplete").css("left").replace("px", "")) - 114).toString() + "px");
},
minLength: 3,
appendTo: "#Autocontainer"
});
ASMX
<%@ WebService Language="C#" CodeBehind="AutoCompleteWebService.asmx.cs" Class="RoyalTours.AutoCompleteWebService" %>
c# [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class autocomp : System.Web.Services.WebService
{
[WebMethod]
public List<string> IndentifySearch(string keyWord)
{
string currentPageURL = HttpContext.Current.Request.Url.AbsolutePath;
List<Package> olstPackage = null;
olstPackage = new PackageRepository().SearchPackage(keyWord);
List<string> olstResult = null;
if (olstPackage.Count > 0)
{
olstResult = new List<string>();
for (int indexCountry = 0; indexCountry < olstPackage.Count; indexCountry++)
{
olstResult.Add(olstPackage[indexCountry].KeyWord);
if (olstPackage.Count <= 0)
{
olstResult.RemoveAt(indexCountry);
}
}
}
return olstResult;
}
}
我冒昧地猜测这是您的.asmx
和.asmx.cs
文件之间的类不匹配的问题。
在.asmx
页面的顶部,确保您的Class
属性与.asmx.cs
页面顶部的class
匹配,如下所示:
后台代码
public class myService: System.Web.Services.WebService
前端<%@ WebService Language="C#" CodeBehind="myService.asmx.cs" Class="MyProject.MyService" %>
如果使用Visual Studio创建一个新的Web服务(默认名称为Service1.asmx
之类的东西),然后将其重命名为MyService.asmx
,这是相当普遍的习惯。但是需要注意的是,并没有在更新文件名的同时更新类引用,因此如果您忘记了,可能会引起麻烦。
EDIT:继续编辑你的问题以清理代码,却发现你实际上已经包含了页面的标记和代码。
正如我所怀疑的,你的类不匹配。看一下:
asmx
Class="RoyalTours.AutoCompleteWebService"
.asmx.cs
public class autocomp