2010-02-10 17 views
6

Sono nuovo JQuery. Sto usando un framework chiuso, che mi consente di aggiungere codice, ma non di modificare alcuni comportamenti. Per aggiungere funzionalità, ho bisogno di collegarmi a una richiesta Ajax specifica e reindirizzarla al mio URL (quindi posso modificare i dati lì e essere un proxy), o modificare i parametri della richiesta dal lato client.Aggancia e modifica richiesta Ajax

Ciò è possibile con JQuery? E se sì, come?

L'evento originale viene generato dopo l'aggiornamento di una casella di testo.


Aggiornamento:

Dopo un'ulteriore ispezione, sembra che la casella di testo viene manipolato utilizzando il plugin jQuery completamento automatico. Sto cercando di tradurre le parole restituite da questa richiesta Ajax. Fondamentalmente l'utente inserisce il testo in una lingua, e io voglio tradurlo in inglese (la traduzione stessa non è il problema) quindi il completamento automatico userà le parole inglesi, e poi voglio tradurre dall'inglese alla lingua originale, per essere visualizzati nella casella di testo e il div hovering.

+0

Non ho mai lavorato con quel me stesso plug-in, ma la maggior parte dei plugin jQuery sono scritte in un modo che è possibile utilizzare l'oggetto prototipo di ignorare le funzioni. Se controlli il codice del plugin, sono sicuro che dovresti essere in grado di trovare la funzione da sovrascrivere e aggiungere il tuo pezzo di codice di traduzione. –

risposta

5

Ho usato il plug-in di completamento automatico jQuery per fare qualcosa di simile, anche se non in uno scenario in cui sto trattando un "framework chiuso".

Sarà possibile eseguire facilmente ciò che si desidera utilizzando il metodo .setOptions() sull'oggetto autocomplete dopo l'inizializzazione. Così il codice andrà qualcosa di simile (non testato pseudocodice!!):

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

Controlla le opzioni: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

3

Non penso che ci sia una soluzione semplice a ciò che si sta tentando di fare poiché l'oggetto XMLHTTPRequest è chiuso per motivi di sicurezza.

Se si è fortunati, la parte che esegue la richiesta AJAX è suddivisa in una funzione che è possibile sovrascrivere o sovrascrivere utilizzando l'oggetto prototipo.

In caso contrario, probabilmente è meglio agganciare l'evento di modifica della casella di testo.

In 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, dopo aver provato ad usare il tuo codice ho capito che mi sbagliavo. vedi la mia Q aggiornata – Amirshk

0

Si potrebbe guardare ad attuare il codice in un "beforeSend" della richiesta AJAX?

Problemi correlati