Typeahead bloodhound prefetch导致内部服务器错误(ASP.NET)

时间:2015-06-02 14:23:52

标签: javascript c# asp.net typeahead

我想在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代码段不起作用的原因?

0 个答案:

没有答案