【问题标题】:Additional search terms in JQuery Autocomplete 1.8JQuery Autocomplete 1.8 中的附加搜索词
【发布时间】:2011-10-11 15:30:36
【问题描述】:

我是 Jquery 的新手,所以我可能遗漏了一些明显的东西...... .

我正在使用 JQuery 的 1.8 自动完成小部件进行搜索搜索。用户输入 3 个字符后,触发该功能。所以下面函数中的“term”代表街道名称中的字符。

但是,用户已经输入了他们的邮政编码和门牌号码,我也希望将这些值传递给查询。我也如何发送这些值?我只能弄清楚如何发送单个“术语”。

(如果重要的话,我使用的是 ASP.Net MVC3)

  $("#SearchStreet").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/VoterAndPollingPlaceLookup/PollingPlaceSearch/FindStreet",
                dataType: "json",
                data: {
                    term: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            value: item
                        }
                    }));
                }
            });
        },
        minLength: 3,
        delay: 0
    });

编辑:经过帮助,下面是我的新代码,它工作得很好!

我进行了以下更新: 我正在调用的控制器操作:

Public Function FindStreet(term As String, searchZip As String, searchHouse As String) As JsonResult
           .....returns results
        End Function

以下是更新后的 Jquery。

 $("#SearchStreet").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/OnlineVoterRegistration/ApplicationDetails/FindStreet",
                dataType: "json",
                data: { term: request.term, 
                        searchZip: $("#SearchZip").val(), 
                        searchHouse: $("#SearchHouse").val() }
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            value: item
                        }
                    }));
                }
            });
        },
        minLength: 3,
        delay: 0
    });

【问题讨论】:

  • searchZip 和 searchHouse 是 HTML 输入还是 .net 控件?
  • 它们是 HTML 输入字段的 ID。
  • 我发现了问题。大写。 (现在,我脸上的表情很尴尬。:-))原来它应该是“SearchZip”而不是“searchZip”。我将编辑我的问题以显示固定代码。

标签: jquery jquery-ui jquery-ui-autocomplete


【解决方案1】:

ajax 请求的data 参数接受一个JSON 对象,因此您只需将其他属性添加到该对象即可。像这样:

$("#SearchStreet").autocomplete({ 
        source: function (request, response) { 
            $.ajax({ 
                url: "/VoterAndPollingPlaceLookup/PollingPlaceSearch/FindStreet", 
                dataType: "json", 
                data: { 
                    term: request.term,
                    zipCode: 'zip code',
                    houseNumber: 'house number'
                }, 
                success: function (data) { 
                    response($.map(data, function (item) { 
                        return { 
                            value: item 
                        } 
                    })); 
                } 
            }); 
        }, 
        minLength: 3, 
        delay: 0 
    });

在您的控制器操作中,您必须添加参数zipCodehouseNumber

【讨论】:

  • 遇到了麻烦。如何从请求对象中获取邮政编码和门牌号码的值?我尝试了多种方法 - 最近的是:data: { term: request.term, searchZip: $("#searchZip").val(), searchHouse: $("#searchHouse").val() },
  • 如果您将提到的两个参数添加到控制器操作中,您将从请求中接收它们。 asp.net mvc 知道如何将 JSON 对象属性映射到操作参数。换句话说,你的控制器动作签名应该是这样的:public ActionResult FindStreet(string term, string zipCode, string houseNumber)
  • 我做到了 - 我将在上面的笔记中发布一个示例作为附加信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 2015-06-21
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多