jquery - 设置 jquery 自动完成源时如何将 JSON 数据传递给 WCF 方法

标签 jquery wcf jquery-ui autocomplete

我在 stackoverflow 上看到了很多类似的帖子,但都不适合我。我有简单的 AJAX ENABLED WCF 服务,它根据输入返回城市

 [OperationContract]
    public IEnumerable<string> GetCities(string prefix)
    {
        string[] cities = new[] { "New York", "Atlanta", "Los Angeles", "Las Vegas", "Arizona", "New Hampshire", "New England" };

        if(!String.IsNullOrEmpty(prefix))
        {
            cities = cities.Where(a => a.ToLower().StartsWith(prefix.ToLower())).ToArray();
        }

        return cities;
    }

现在我尝试使用 jquery ui 的自动完成功能来调用此方法。问题是我必须将前缀参数传递给方法调用,但无论我尝试什么,前缀参数都会作为查询字符串附加到 url 中。这是我的 jQuery 代码

$("input[type=text][id*=autocompleteBox]").autocomplete({
    source: function (request, response) {
        var dataCity = {'prefix': request.term};
        $.ajax({
            url: "http://localhost:1939/Cities.svc/GetCities",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(dataCity),
            success: function (data) {
                response($.map(data, function (item) {
                    return {
                        label: data
                    }
                }));
            }
        });
    },
    minLength: 0
});

我知道我有 3 个选项来调用远程数据源。 第一个选项是上面的代码,但这样我就将字符串化的 json 结果附加到 url 中。

然后我尝试简单地将服务的 url 传递给源选项,但我得到了相同的结果( term=myinput 附加到 url )。

我无法使用第三个选项(包含本地数据的数组),因为我有很多条目,我不想将它们全部保留在客户端上。

那么如何将前缀参数传递给服务方法?这是可能的吗,或者如果我选择使用 jquery ui 的自动完成小部件,我必须坚持使用 url 附加参数?

最佳答案

我没有看到您的 ajax 调用(type 参数)中指定的 HTTP 方法,因此它默认为 GET,并且 GET 不能有内容。使用 GET 时传递数据的唯一方法是通过 URL 参数。顺便提一句。因为你的方法只是获取数据,所以它应该使用 GET 请求。

因此,不要发送 JSON,而是发送:

var dataCity = "prefix=" +  encodeURIComponent(request.term);

关于jquery - 设置 jquery 自动完成源时如何将 JSON 数据传递给 WCF 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114521/

相关文章:

jquery - 如何在 div 中插入新行,用 jQuery 显示 textarea 中的变化

具有多个选择器的 JQuery .find

javascript - 谷歌地图自动完成总是选择第一项

wcf - 在 WCF 中传递多个流

.net - 周转基金。 REST 架构。如何在 JSON (POST) 中从客户端获取对象

jquery - 如何使用 jQuery UI 将可排序行附加到另一个选项卡中的表?

jquery - 有没有办法将我的 UI 主题滚轮主题应用到我的 jquery 移动网站?

javascript - 如何使用 jQuery 进行后期绑定(bind)?

c# - WCF 多进程处理/设计

jQuery UI datepicker - 在日历下方添加静态文本?