挂钩并更改ajax请求

时间:2010-02-10 08:26:08

标签: jquery ajax proxy

我是JQuery的新手。我正在使用一个封闭的框架,它允许我添加代码,但不能改变一些行为。 为了添加功能,我需要挂钩到特定的Ajax请求,并将其重定向到我的URL(这样我可以在那里更改数据并成为代理),或者在客户端更改请求的参数。

这可以用JQuery吗?如果是这样,怎么样?

更新文本输入框后会触发原始事件。


更新

经过进一步检查后,似乎使用JQuery Autocomplete插件操作了文本框。我试图翻译从这个ajax请求返回的单词。基本上用户输入一种语言的文本,我想将其翻译成英语(翻译本身不是问题)所以自动完成将使用英语单词,然后我想从英语翻译成原始语言,到显示在文本框和悬停div中。

5 个答案:

答案 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”中实现你的代码吗?