我是JQuery的新手。我正在使用一个封闭的框架,它允许我添加代码,但不能改变一些行为。 为了添加功能,我需要挂钩到特定的Ajax请求,并将其重定向到我的URL(这样我可以在那里更改数据并成为代理),或者在客户端更改请求的参数。
这可以用JQuery吗?如果是这样,怎么样?
更新文本输入框后会触发原始事件。
更新
经过进一步检查后,似乎使用JQuery Autocomplete插件操作了文本框。我试图翻译从这个ajax请求返回的单词。基本上用户输入一种语言的文本,我想将其翻译成英语(翻译本身不是问题)所以自动完成将使用英语单词,然后我想从英语翻译成原始语言,到显示在文本框和悬停div中。
答案 0 :(得分: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
答案 1 :(得分: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
};
})
});
答案 2 :(得分:1)
你有没有看过javascript中的观察者模式?我在我的博客上创建了一个示例。这可能会对你有所帮助。
http://www.versomas.com/dannyg/post/Observer-pattern-in-Javascript.aspx
答案 3 :(得分:0)
使用google translate jquery插件。我过去非常成功地使用它来翻译文本:http://code.google.com/p/jquery-translate/
答案 4 :(得分:0)
你可以看一下在AJAX请求的“beforeSend”中实现你的代码吗?