jquery更新div作为文本输入被修改

时间:2010-05-26 10:11:49

标签: jquery

所以我在表单中输入了这个文本,并且我希望在用户在文本输入中键入文本时更新div。

 <p><label for="movie_name">Film: </label> <input type="text" name="movie_name" class="required" onkeydown="changediv2(this.value)" /></p>

 <p><div id="ajax_update"></div></p>

我的js方法:

function changediv2(str) {
$('#ajax_update').html(geturl('http://url/search/movie?query='+str));
}

如果我输入浏览器http://url/search/movie?query=someString,我会显示一些html。 但是当我通过这个ajax调用调用它时,没有任何反应......

我的geturl方法:

function geturl(addr) {
 var r = $.ajax({
  type: 'GET',
  url: addr,
  async: false
 }).responseText;
 return r;
}

我看不出有什么问题......

请帮帮我! :)

3 个答案:

答案 0 :(得分:3)

有可能,您的函数在客户端收到ajax响应之前返回。我建议删除async选项并在$.ajax成功回调中执行注入,例如:

function changediv2(addr, str) {
    $.ajax({
      type: 'GET',
      url: addr + str,
      success: function(response) { $('#ajax_update').html(response) }
    });
}

答案 1 :(得分:0)

你的功能应该是:

function geturl(addr) {    
 $.ajax({
  type: 'GET',
  url: addr,
  async: false,
  success:function(response) {
   return response;
  };
 });    
}

答案 2 :(得分:0)

  1. 我会使用“keyup”事件,否则你总是落后一个角色。
  2. 您在同一台服务器上通过Javascript请求的页面?因为这是不可能的,除非你使用像“jsonp”这样的东西,这可能不是这种情况。
  3. 我会使用超时/清除情况,因此您不会经常发送请求。
  4. 同步请求锁定整个浏览器,直到它完成,不确定这是否是你想要的/如果它与键入一起工作得好......