2011-07-13 31 views
17

Tôi đang sử dụng phiên bản 1.8.13 của Tự động hoàn thành giao diện người dùng jQuery và theo mặc định, jQuery đang sử dụng tham số truy vấn "? Term =" theo mặc định, trong khi ứng dụng của tôi đang sử dụng "? Q = "trong chuỗi nó đang tạo. Tôi có thể thay đổi biến để được "hạn" trên backend, nhưng tôi muốn chỉ nói với jQuery những gì các máy chủ đang cố gắng để gửi nó. Có cách nào để thay đổi điều này? Ngay bây giờ tôi chỉ có một cái gì đó như thế này và nó hoạt động nếu tôi thay đổi biến thành "hạn" trên backend, nhưng như tôi đã nói tôi muốn thay đổi nó thành "q" và tôi không thể tìm thấy bất kỳ thông tin trực tuyến về việc đặt thông số (hoạt động):Thay đổi thông số truy vấn cho tự động hoàn thành giao diện người dùng jQuery

$("#input-search").autocomplete({ 
    source: "/search/autocomplete/" 
}); 

Trả lời

25

Bạn có thể sử dụng callback form of source và tự mình xử lý tất cả tương tác với máy chủ. Một cái gì đó như thế này:

$("#input-search").autocomplete({ 
    source: function(request, response) { 
     $.get('/search/autocomplete', { q: request.term }, function(data) { 
      response(data.split('\n')); 
     }); 
    } 
}); 
+0

Tôi không cần .split ('\ n') - nó đã là một mảng giá trị –

+0

lưu ý rằng bạn thực sự có thể thay đổi cụm từ tìm kiếm bằng cách sử dụng nguồn quá (tôi dọn sạch địa chỉ email với các ký tự thừa). Phương thức "tìm kiếm" đã lưu cụm từ tìm kiếm, vì vậy việc thay đổi giá trị ở đó (trong đầu vào) đã quá muộn. –

11

Câu trả lời ở trên là một ví dụ đơn giản tuyệt vời và đã giúp tôi có được để kết quả này trên ứng dụng của tôi sẽ tạo một danh sách có thứ tự từ các dữ liệu phản ứng đó sẽ hiển thị các kết quả autocomplete:

$("#input-search").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
     url: "/search/autocomplete", 
     dataType: "json", 
     data: { 
      q: request.term 
     }, 
     success: function(data) { 
      response(data); 
     } 
     }); 
    }, 
}).data("autocomplete")._renderItem = function(ul, item) { 
    $(ul).attr('id', 'search-autocomplete'); 
     return $("<li class=\""+item.type+"\"></li>") 
     .data("item.autocomplete", item) 
     .append("<a href=\""+item.url+"\">"+item.title+"</a>").appendTo(ul); 
    }; 
Các vấn đề liên quan