2011-10-11 43 views
0

我是一个Jquery的新手,所以我可能会错过一些明显的东西......。JQuery自动完成中的其他搜索条件1.8

我正在使用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 
    }); 
+0

是searchZip和searchHouse HTML输入还是.net控件? –

+0

它们是HTML输入字段的ID。 – user158017

+0

我发现了这个问题。资本。 (不好意思看我的脸,现在。:-))原来它应该是“SearchZip”而不是“searchZip”。我将编辑我的问题以显示固定代码。 – user158017

回答

1

data参数Ajax请求接受一个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

+0

谢谢 - 我会给你一个机会! – user158017

+0

遇到问题。如何从请求对象获取邮政编码和门牌号码的值?我尝试了各种方法 - 最近的是这样的:data:{ term:request.term, searchZip:$(“#searchZip”)。val(), searchHouse:$(“#searchHouse”)。 val() }, – user158017

+0

如果您将两个提到的参数添加到控制器操作中,您将从请求中接收它们。 asp.net mvc知道如何将JSON对象属性映射到操作参数。换句话说,你的控制器动作签名应该看起来像这样:'公共ActionResult FindStreet(字符串术语,字符串zipCode,字符串houseNumber)' – devnull