2011-03-03 47 views
13

tôi thấy mã này trong một bài SO: jQuery UI Autocomplete with ASP MVCChức năng phản hồi javascript này hoạt động như thế nào?

$("#CustomerID").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       type: "POST", 
       url: "/customer/search", 
       dataType: "json", 
       data: { 
        term: request.term 
       }, 
       error: function(xhr, textStatus, errorThrown) { 
        alert('Error: ' + xhr.responseText); 
       }, 
       success: function(data) { 
        response($.map(data, function(c) { 
         return { 
          label: c.Company, 
          value: c.ID 
         } 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      alert('Select'); 
     } 
    }); 

Tôi hiểu tất cả mọi thứ ngoại trừ chức năng thành công. Tôi biết rằng bản đồ đang lấy một mảng và ánh xạ từng giá trị cho một đối tượng mới có thuộc tính label và value và trả về mảng mới, nhưng tôi không chắc phản hồi() làm gì.

Trả lời

17

Đối tượng này được gọi là phản hồi là chức năng gọi lại được chuyển đến hàm được gắn nhãn bằng phương pháp tự động hoàn thành.

thấy Jquery UI Autocompleate

Các biến thể thứ ba, gọi lại, cung cấp sự linh hoạt nhất, và có thể được sử dụng để kết nối bất kỳ nguồn dữ liệu để Autocomplete. Hàm gọi lại nhận được hai đối số:

Đối tượng yêu cầu, với một thuộc tính duy nhất được gọi là "thuật ngữ", đề cập đến giá trị hiện tại trong nhập văn bản. Ví dụ: khi người dùng nhập "new yo" vào trường thành phố, cụm từ Tự động hoàn thành sẽ bằng "yo mới".

A phản hồi gọi lại, dự kiến ​​một đối số duy nhất chứa dữ liệu đề xuất cho người dùng. Dữ liệu này nên được lọc dựa trên thuật ngữ được cung cấp và có thể ở bất kỳ định dạng nào được mô tả ở trên cho dữ liệu cục bộ đơn giản (String-Array hoặc Object-Array với nhãn/giá trị/cả hai thuộc tính). Điều quan trọng là khi cung cấp gọi lại nguồn tùy chỉnh để xử lý lỗi trong khi yêu cầu. Bạn phải luôn gọi cuộc gọi trả lời ngay cả khi bạn gặp phải lỗi. Điều này đảm bảo rằng tiện ích luôn có trạng thái chính xác.

+0

Wow làm cách nào tôi bỏ lỡ điều đó. Facepalm :) – Dismissile

+0

@david nước chúng ta có thể đặt thời hạn yêu cầu và làm thế nào? – bhawin

-3

Dường như đó là chức năng tùy chỉnh mà mã của bộ mã gốc có. Theo hiểu biết tốt nhất của tôi, đây không phải là một hàm jQuery vốn có.

Các vấn đề liên quan