Подцепить и изменить запрос ajax - PullRequest
6 голосов
/ 10 февраля 2010

Я новый JQuery. Я использую закрытую среду, которая позволяет мне добавлять код, но не изменять некоторые параметры поведения. Чтобы добавить функциональность, мне нужно подключиться к конкретному Ajax-запросу и либо перенаправить его на свой URL (чтобы я мог изменить данные там и быть прокси-сервером), либо изменить параметры запроса на стороне клиента.

Возможно ли это с JQuery? И если да, то как?

Исходное событие вызывается после обновления поля ввода текста.


Обновление:

После дальнейшей проверки кажется, что с текстовым полем манипулируют с помощью плагина JQuery Autocomplete. Я пытаюсь перевести слова, возвращенные из этого запроса AJAX. По сути, пользователь вводит текст на одном языке, и я хочу перевести его на английский (сам перевод не проблема), поэтому автозаполнение будет использовать английские слова, а затем я хочу перевести с английского на исходный язык, чтобы будет отображаться в текстовом поле и в окне парения.

Ответы [ 5 ]

5 голосов
/ 17 февраля 2010

Я использовал плагин автозаполнения jQuery для выполнения чего-то подобного, хотя и не в сценарии, где я имею дело с «закрытой структурой».

Вы сможете легко выполнить желаемое, используя метод .setOptions () для объекта автозаполнения после его инициализации. Таким образом, ваш код будет выглядеть примерно так (непроверенный! Псевдокод!):

$(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;
});

проверить опции: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

3 голосов
/ 10 февраля 2010

Я не думаю, что есть простое решение того, что вы пытаетесь сделать, так как объект XMLHTTPRequest довольно закрыт по соображениям безопасности.

Если вам повезет, та часть, которая выполняет AJAXЗапрос разбит на функцию, которую можно перезаписать или переопределить с помощью объекта-прототипа.

Если нет, то вам, вероятно, лучше перехватить событие изменения текстового поля.

В jQuery:

$('#textboxid').unbind();
$('#textboxid').change(function () {
    $.ajax({
         url: 'http://yourwebservice',
         data: {}, //the data to send to your webservice
         success: function (data) {
             //do your magic
         };
    })
});
1 голос
/ 18 февраля 2010

Вы смотрели на шаблон наблюдателя в javascript? Я создал пример в своем блоге. Это может помочь вам.

http://www.versomas.com/dannyg/post/Observer-pattern-in-Javascript.aspx

0 голосов
/ 17 февраля 2010

Вы можете посмотреть на реализацию своего кода в "beforeSend" AJAX-запроса?

0 голосов
/ 16 февраля 2010

Используйте плагин Google Translate JQuery. Я очень успешно использовал его для перевода текста в прошлом: http://code.google.com/p/jquery-translate/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...