我想在ASP.NET解决方案中动态地将typeahead添加到我的文本框中。在我的项目中,我有一个服务,到目前为止一个测试方法应该从我的服务器返回一个建议列表。
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string[] Test()
{
var test = new[] {"Test1", "Test2"};
return test;
}
我尝试使用此javascript代码调用我的网络方法
function addTypeahead(textbox) {
var bloodHound = new Bloodhound({
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace(d.value.toString());
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: "http://localhost:23135/Service/SomeService.asmx/Test",
filter: function (items) {
return $.map(items, function (item) {
return { value: item.value.toString() }
});
},
ttl: 1000
},
storage: textbox
});
bloodHound.initialize();
$(textbox).typeahead({ highlight: true }, {
hint: false,
name: textbox,
source: bloodHound.ttAdapter()
});
}
但在尝试检索我的建议时,我得到的只是内部服务器错误(500)。但是,如果我拨打ajax电话,我就不会收到内部服务器错误。以下代码完美无缺。
$.ajax({
type: "GET",
url: "http://localhost:23135/Service/SomeService.asmx/Test",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xmlHttpRequest, textStatus) {
alert(textStatus);
},
success: function (suggestions) {
console.log("suggestions:", suggestions);
}
});
为什么第一个javacode代码段不起作用的原因?