2010-02-10 13 views
6

Soy nuevo en JQuery. Estoy usando un marco cerrado, que me permite agregar código, pero no cambiar parte del comportamiento. Para agregar funcionalidad, necesito conectarme a una solicitud Ajax específica y redirigirla a mi URL (para poder cambiar los datos allí y ser un proxy), o cambiar los parámetros de la solicitud en el lado del cliente.Enganche y cambie la solicitud de ajax

¿Esto es posible con JQuery? Y si es así, ¿cómo?

El evento original se activa después de actualizar un cuadro de entrada de texto.


Actualización:

Después de una inspección más detallada, parece que el cuadro de texto se manipula usando el plugin jQuery Autocompletar. Estoy tratando de traducir las palabras devueltas de esta solicitud ajax. Básicamente, el usuario ingresa texto en un idioma, y ​​quiero traducirlo al inglés (la traducción en sí no es el problema) para que el autocompletado use las palabras en inglés, y luego quiero traducir del inglés al idioma original, a se mostrará en el cuadro de texto y el div que se desplaza.

+0

nunca he trabajado con ese plugin mí mismo, pero la mayoría de los plugins jQuery se escriben de una manera que se puede utilizar el objeto prototipo para anular funciones. Si inspecciona el código del complemento, estoy seguro de que podrá encontrar qué función anular y agregar su propio código de traducción. –

Respuesta

5

He usado el complemento de autocompletar jQuery para hacer algo similar, aunque no en un escenario en el que estoy tratando con un "marco cerrado".

Podrá realizar fácilmente lo que desee utilizando el método .setOptions() en el objeto de autocompletar después de que se haya inicializado. Por lo que su código será algo parecido a esto (no probado pseudocódigo!):

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

cuanto a las opciones: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

3

No creo que haya una solución simple a lo que intenta hacer, ya que el objeto XMLHTTPRequest está bastante cerrado por razones de seguridad.

Si tiene suerte, la parte que hace la solicitud AJAX se divide en una función que puede sobrescribir o anular utilizando el objeto prototipo.

Si no es así, probablemente sea mejor que enganche el evento de cambio del cuadro de texto.

En 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, después de tratar de usar mi código, me di cuenta de que estaba equivocado. ver mi Q actualizada – Amirshk

0

Se podría buscar en la implementación de su código en un "beforeSend" de la petición AJAX?

Cuestiones relacionadas