2010-02-10 61 views
6

我是新的JQuery。我使用了一個封閉的框架,它允許我添加代碼,但不能改變一些行爲。 爲了增加功能,我需要鉤入特定的Ajax請求,並將其重定向到我的URL(這樣我可以在那裏更改數據併成爲代理),或者在客戶端更改請求的參數。掛鉤並更改ajax請求

這可能與JQuery?如果是這樣,怎麼樣?

正在更新文本輸入框後觸發原始事件。


更新:

經過進一步檢查,似乎將文本框使用jQuery自動完成插件操作。我試圖翻譯從這個Ajax請求返回的單詞。基本上用戶用一種語言輸入文本,並且我想將它翻譯成英文(翻譯本身不是問題),所以自動完成將使用英文單詞,然後我想從英文翻譯成原始語言,顯示在文本框和懸停div。

+0

我從來沒有與該插件自己的工作,但大多數的jQuery插件都寫在一個方式,你可以使用原型對象覆蓋功能。如果你檢查插件代碼,我相信你應該能夠找到覆蓋哪個函數並添加你自己的一段翻譯代碼。 – 2010-02-10 09:26:18

回答

5

我已經使用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

我不認爲有一個簡單的解決方案,你想要做什麼,因爲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 
     }; 
    }) 
}); 
+0

@Oscar,嘗試使用我們的代碼後,我意識到我錯了。看到我更新的Q. – Amirshk 2010-02-10 09:18:15

0

你可以看看在AJAX請求的「beforeSend」實現你的代碼?