2010-02-10 46 views
6

Tôi mới là JQuery. Tôi đang sử dụng một khung đóng, cho phép tôi thêm mã, nhưng không thay đổi một số hành vi. Để thêm chức năng, tôi cần phải móc vào một yêu cầu Ajax cụ thể và chuyển hướng nó đến URL của tôi (vì vậy tôi có thể thay đổi dữ liệu ở đó và là proxy), hoặc thay đổi các tham số của yêu cầu ở phía máy khách.Hook và thay đổi yêu cầu ajax

Điều này có thể thực hiện được với JQuery không? Và nếu vậy, làm thế nào?

Sự kiện ban đầu được kích hoạt sau khi hộp nhập văn bản đang được cập nhật.


Cập nhật:

Sau khi kiểm tra hơn nữa, có vẻ như hộp văn bản được chế tác sử dụng các plugin JQuery Autocomplete. Tôi đang cố dịch các từ được trả về từ yêu cầu ajax này. Về cơ bản người dùng nhập văn bản bằng một ngôn ngữ và tôi muốn dịch sang tiếng Anh (bản dịch không phải là vấn đề) để tự động hoàn thành sẽ sử dụng các từ tiếng Anh, và sau đó tôi muốn dịch từ tiếng Anh sang ngôn ngữ gốc, sang được hiển thị trong hộp văn bản và div lơ lửng.

+0

Tôi chưa bao giờ làm việc với điều đó cắm bản thân mình, nhưng hầu hết các plugin jQuery được viết theo một cách mà bạn có thể sử dụng đối tượng nguyên mẫu để ghi đè lên các chức năng. Nếu bạn kiểm tra mã plugin tôi chắc chắn bạn sẽ có thể tìm thấy chức năng nào cần ghi đè và thêm đoạn mã dịch của riêng bạn. –

Trả lời

5

Tôi đã sử dụng trình cắm thêm tự động hoàn thành jQuery để thực hiện điều gì đó tương tự, mặc dù không phải trong kịch bản mà tôi đang xử lý "khung đóng".

Bạn sẽ có thể dễ dàng thực hiện những gì bạn muốn bằng cách sử dụng phương thức .setOptions() trên đối tượng tự động hoàn tất sau khi nó được khởi tạo. Vì vậy, mã của bạn sẽ đi một cái gì đó như thế này (chưa được kiểm tra giả!):

$(autoCompletedField).setOptions({ 
    formatItem: function(resultsRow, resultPosition, totalResults, inputWord) { 
     // translate your menu items to be displayed in the drop down menu here 
     // perhaps extend jQuery to handle $.translate(inputWord) ? 
     return "<li>"+translatedWord+"</li>"; 
    } 
}).result(function(event,selectedItem){ 
    // optionally do something more when the user selects one of those items here 
    // translate the selectedItem back to another language? i dont know. 
    return translatedItem; 
}); 

kiểm tra các tùy chọn: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

3

Tôi không nghĩ rằng có một giải pháp đơn giản cho những gì bạn đang cố gắng làm vì đối tượng XMLHTTPRequest bị đóng cửa khá tốt vì lý do bảo mật.

Nếu bạn may mắn phần yêu cầu AJAX được chia nhỏ thành một hàm mà bạn có thể ghi đè hoặc ghi đè bằng cách sử dụng đối tượng mẫu thử nghiệm.

Nếu không, bạn có thể nên sử dụng sự kiện thay đổi của hộp văn bản.

Trong jQuery:

$('#textboxid').unbind(); 
$('#textboxid').change(function() { 
    $.ajax({ 
     url: 'http://yourwebservice', 
     data: {}, //the data to send to your webservice 
     success: function (data) { 
      //do your magic 
     }; 
    }) 
}); 
+0

@Oscar, sau khi cố gắng sử dụng mã ur tôi nhận ra tôi đã nhầm lẫn. xem cập nhật của tôi Q. – Amirshk

0

Bạn có thể nhìn vào thực hiện mã của bạn trong một "beforeSend" được yêu cầu AJAX?

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